Andrew Ng 교수님의 Corsera 강의 Neural Networks and Deep Learning의
Week2 Neral Networks Basics에 대해 공부한 내용을 간략히 정리하겠습니다.
Week 2. Neural Networks Basics
1. Binary Classification
이미지를 보고 고양이 이미지라면 1, 아니면 0을 분류.
입력기에서는 벡터로 표현되는 이미지 데이터를 입력할 수 있게함.
그리고 1인지 0인지 예측함.
X는 파란글씨로 표현됨.
이미지 데이터에서의 X의 데이터 형태는 (nx, m) , y의 데이터 형태는 (1,m)임.
2. Logistic Regression
우선, Logistic Regression이 어떻게 생겼는지 알아봄.
위의 데이터처럼 X가 주어지고 y는 1인 확률을 예측한다면,
파란색 글씨와 같이 x는 Rⁿˣ(n차원의 실수 벡터 공간)의 형태를 가짐을 의미.
parameters w도 입력 데이터와 동일하게 n차원의 형태이며, b는 1개 뿐임.
output은 연산값 z을 시그모이드 함수를 거쳐서 나옴.
시그모이드는 연두색 글씨로 정의할 수 있음.
z가 커질수록 1, 작아질수록 0에 수렴함.
갈색글씨는 예측값 y의 형태를 설명해줌.
θ는 여러개의 w와 한개의 b값으로 구성됨.
3. Logistic Regression Cost Function
이번엔 Logistic Regresion의 Loss Function과 Cost Function에 대한 내용을 설명함.
Logistic Regression에서
Loss는 가능한 작아지기를 원함.
그래서 Loss Function은 L(ŷ, y) = -[y * log(ŷ) + (1 - y) * log(1 - ŷ)]로 나타냄
y가 1이라면 -log(ŷ)이 가능한 작아지길 원하므로 y^이 커질 것.
y가 0이라면 -log(1 - ŷ)이 작아지길 원하므로 y^가 작아질 것.
Cost Function은 J(θ) = (1 / m) * Σ [L(ŷ^(i), y^(i))] 로 나타냄.
Cost Function에 Loss Function을 대입하면
J(θ) = (1 / m) * Σ [-y^(i) * log(ŷ^(i)) - (1 - y^(i)) * log(1 - ŷ^(i))]
의 수식이 완성.
4. Gradient Descent
Gradient Descent 알고리즘을 이용해서 Parameter W를 학습할 수 있음.
위의 수식과 그림으로 표현되며,
그림은 편의를 위해 그릇 모양이지만, 실제로는 울퉁불퉁함.
J(w,b) => 최적의 w,b값을 찾아 Loss를 최소화함.
아래 스크립트의 그래프는 간략한 설명을 위해 b를 무시.
Gradient Descent는 말 그대로 가장 최소의 Loss까지 도달하도록
Gradient를 이용하는 것이고,
이로 인해 최적의 가중치를 구할 수 있음.
Gradient를 알기 위해서는 미분(Derivatives) 혹은 편미분(partial derivative)을 해줘야함.
만약 기호가 d라면 미분, ∂라면 편미분을 나타냄.
매개변수가 2개 이상이라면 편미분 ∂을 진행.
w := w - α * (dJ(w) / dw)로 갱신을 반복.(실제로는 b도 함께 진행.)
최소 Loss, 최적의 가중치를 구함.
5. Derivatives
그럼 미분(Derivatives)은 무엇일까?
함수 f(a) = 3a는 직선이고 a의 값을 약간 변형하면 f(a)의 값은
세 배만큼 변함. => 기울기(slope)가 3임.
미세하기 변한다고 하더라도 기울기는 동일.
이 기울기를 구하는 것이 derivative(미분)임.
6. More Derivative Examples
미세한 값(0.001)을 움직여봐도 기울기가 동일한지 체크.
기울기는 곡선의 지점에 따라 그 값이 다를 수 있음.
7. Computation Graph
만약 J(a,b,c) = 3(a + b*c) 를 계산한다고 하면
첫번째 계산단계 b*c를 u = b*c,
두번째 단계 a + b*c를 v = a + u,
세번째 단계 3(a + b*c)를 3 * v 라고 가정.
위 그림의 순서대로 함수 J는 계산됨.
8. Computing derivatives
이 계산에 미분을 하게 된다면?
chain rule(연쇄법칙)이라는 방식으로 진행.
J를 편미분한다면
위의 계산의 역순서대로 진행.
dJ/du = 3
dJ/db = dJ/du(3) * du/db(2) = 6
dJ/dc = dJ/du * du/dc = 9
이런식으로 필요한걸 순서대로 편미분해서 계산해주어야함. => chain rule
9. Logistic Regression Gradient Descent
Logistic Regression에 위의 편미분 측면에서 다시 Gradient Descent 해보자.
dW1을 구하고 싶다고 하면
1. dW1 = dL/dW1
2. dL/dW1 = dz/dW1 * dL/dz
3. dL/dz = dL/da * da/dz
순서로 진행됨.
3번 구하고 2번구하고 1번 구함.
결과적으로 이렇게 chain rule을 이용해
w1, w2, b를 구해서
w1 := w1 - α * dw1
w2 := w2 - α * dw2
b := b - α * dwb
를 갱신하면서 Gradient Descent 진행함.
10. Gradient Descent on m Examples
m개의 훈련 예제에서 진행해봄.
for문을 통해 반복하여 w1,w2, b를 갱신함.
하지만 코드에서 for문 대신 Vectorization을 하는게 효율이 훨씬 좋다.
=> 다음 글에 이어서 정리.
'인공지능 개발하기 > Bootcamp & Conference 참여' 카테고리의 다른 글
[Conference] 모두의연구소 MODUCON 2024 후기 (2) | 2024.12.29 |
---|---|
[Coursera] 1. Neural Networks and Deep Learning - Week 1. Introduction to Deep Learning (0) | 2024.09.09 |
[MLB2024 TechTalk] Gemma-Ko: 오픈 언어모델에 한국어 입히기 테크톡 리뷰 (1) | 2024.09.08 |
[Conference]Google I/O Extended 2024 Incheon 회고 (1) | 2024.07.29 |
[MLB2024]Google ML Bootcamp 5기 도전 (2) | 2024.06.26 |