코세라 앤드류 응 AI 강의 리뷰

[인공지능 강의 리뷰] 13 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기2 (고양이 사진 분류기)

파요요요 2022. 5. 16. 22:10

3 - General Architecture of the learning algorithm

연습문제 2번

각각의 픽셀의 값들은 (RGB 색깔의 세기 값을 나타내는) 0~255 값이 적혀있습니다.

기계 학습의 일반적인 전처리 단계 중 하나는, 데이터 세트를 중앙에 배치하고 표준화하는 것입니다.

원래는 각 예제에서 전체 행렬(배열)의 평균을 뺀 다음 각 예제를 전체 행렬(배열)의 표준 편차로 나눕니다.

하지만 저희가 훈련하는 사진 데이터 세트의 경우,

데이터 세트의 모든 행을 255(픽셀 채널의 최댓값)로 나누는 것이 더 간단하고 편리하며 거의 잘 작동합니다.

 

기억해야 할 점 :

새 데이터 세트를 사전 처리하는 일반적인 단계는 다음과 같습니다.

-문제의 크기와 모양을 파악합니다(m_train, m_test, num_px,...).

-각 예제가 (num_px * num_px * 3, 1)의 벡터가 되도록 데이터 세트의 형태를 변경합니다.

-데이터 "표준화"합니다. --> 255로 나누기

지도 학습 알고리즘의 구조
로지스틱 회귀 알고리즘 수학적 표현

위의 그림은, 로지스틱 회귀를 이용한 뉴럴 네트워크를 아주 쉽게 설명하는 그림입니다.

중요한 단계 : 이 연습에서는 다음 단계를 수행합니다.

- 모델의 매개변수 초기화

- 비용을 최소화하여, 모델의 매개변수 학습

- 학습된 매개변수를 사용하여 테스트 세트에서 예측

- 결과 분석 및 결론


4 - Building the parts of our algorrithm

+ 4.1 - Helper functions ( Exercise 3)

연습문제 3번

신경망(Neural Network)을 구축하기 위한 주요 단계는 다음과 같습니다.

모델 구조 정의(예: 입력 특징의 수)

모델의 매개변수 초기화

loop(반복) :

1 - 현재 손실 계산(순방향 전파, forward Propagation)

2 - 현재 기울기 계산(역전파, Backward Propagation)

3 - 매개변수 업데이트(경사 하강법, Gradient descent)

종종 1~3을 별도로 분리하거나 model()이라고 하는 하나의 함수로 통합합니다.

 

Python 코드를 사용하여 sigmoid()를 구현합니다.

위 그림에서 보았듯이 𝑧=𝑤𝑇𝑥+𝑏에 대해 np.exp() 사용하여, 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧)를 계산해야 합니다.

연습문제 3번

리턴 값으로 sigmoid(z)가 나와야 하니,

시그모이드 함수(sigmoid function)를 코드로 정의해 주어야 합니다.

연습문제 3번

np.exp() 코드로 자연로그 e를 표현하여 입력해 줍시다.

연습문제 43번

실행하면, 정답인 걸 확인할 수 있습니다. 다음으로 넘어가 봅시다.


4.2 - Initializing parameters (Exercise 5)

initialize_with_zeros()는 매개변수를 초기화 한 값을 반환합니다.

연습문제 4번

np.zeors()를 매개변수를 초기화해야 합니다.

--> np.zeros( A)는 0으로 구성된 A 차원의 행렬(배열)을 반환하는 numpy 함수입니다.

리턴 값으로, w는 dim * 1 행렬(배열) , b는 실수 타입 0이 나와야 합니다

주의할 점은 b는 실수 타입이기에, 0이 아닌 0.0으로 나타내야 합니다!

연습문제 5번

코드를 작성하고, 실행해 봅시다.

연습문제 4번

실행해 보면, 성공적으로 결과가 나온 걸 확인할 수 있습니다!

반응형

4.3 - Forward and Backward propagation (Exercise 5)

연습문제 5번

이제 매개변수를 초기화하기 위해서, 손실 함수와 기울기를 계산해야 합니다.

아래의 propagate()비용 함수와 기울기를 반환합니다

연습문제 5번

저희가 작성해야 할 코드는 총 4줄입니다!

(활성화 함수, 비용 함수, w에 대한 비용 함수의 미분 값, b에 대한 비용 함수의 미분 값)

연습문제 5번

w.T * X는 행렬의 곱이므로, np.dot()을 사용하고,

시그마 기호로 나타낸 총합은 np. sum()으로 표현해서 나타내면 됩니다.

dw와 db 또한 그대로 코드로 옮겨서 작성하기만 하면 됩니다.

연습문제 5번

코드를 작성하면 이렇게 됩니다!

연습문제 5번

실행하여 정답을 확인했으니 , 다음으로 넘어가 봅시다.


4-4 Optimization (Exercise 6)

연습문제 6번

매개변수를 초기화했습니다.

이제 비용 함수와 그 기울기를 계산할 수도 있습니다.

경사 하강법을 사용하여 매개변수를 업데이트해봅시다.

목표는 비용 함수를 최소화하는 𝑤 𝑏 를 알아내는 것입니다.

매개 변수의 경우 업데이트 규칙은 𝜃=𝜃−이며, 여기서 𝛼은 학습률입니다.

이제 optimize() 최적화 함수를 정의해 봅시다.

연습문제 6번
연습문제 6번

grads , cost는 바로 직전 propagate()로 구현했으니, 불러만 주면 됩니다!

w, b도 문제에서 dw, db가 정의돼있으니 학습률(learning late)만 곱해서 작성해 주면 됩니다.

연습문제 6번

이렇게 코드를 작성하면 됩니다! 정답인지 확인해 봅시다.

연습문제 6번

정답인 걸 확인했습니다!

매개변수를 업데이트하는 과정까지 다 끝냈습니다.

훈련 모델을 다 만들었으니, 다음 글에 이어서

만든 로지스틱 회귀 모델을 테스트 데이터를 통해서 테스트해봅시다.


이 내용들은 모두 coursera에서 앤드루 응 교수님의 강의를 요약정리 및 쉽게 재 풀이하여 적은 글이며,

내용에는 생략되거나 변형된 부분이 많으니 직접 강의를 들어보시는 걸 추천드립니다!

이 글은 상업적 목적이 아닌, 한국에서 인공지능을 배우고 싶은 분들을 위해 적은 교육적 목적에서 작성하였습니다.

반응형