Deep Learning/Basics
[Andrew Ng] 딥러닝 1단계 : 2. 신경망과 로지스틱회귀 (2)
hyeonzzz
2023. 9. 12. 15:16
1. 계산 그래프 (Computation Graph)
▶ 계산 그래프 (Computation Graph)
: 계산 과정을 그래프로 나타낸 것
▶ 신경망의 계산
- 순전파 (forward propagation) : 신경망의 출력값을 계산
- 역전파 (back propagation) : 경사나 도함수를 계산
▶ J(a,b,c)=3(a+bc) 의 계산 그래프 만드는 과정
- u = bc
- v = a+u
- J = 3v
2. 계산 그래프로 미분하기
▶ 연쇄 법칙 (Chain rule)
: 합성함수의 도함수는 합성함수를 구성하는 함수의 미분을 곱함으로써 구할 수 있다
▶ back propagation 이용
1. v에 대한 J의 도함수 구하기
v = 11 -> 11.001
J = 33 -> 33.003
따라서 v에 대한 J의 도함수는 3이다
2. a에 대한 J의 도함수 구하기
a = 5 -> 5.001
v = 11 -> 11.001
J = 33 -> 33.003
따라서 a에 대한 J의 도함수는 3이다
* a를 바꾸면 -> v가 증가 -> J가 증가
3. u에 대한 J의 도함수 구하기
u = 6 -> 6.001
v = 11 -> 11.001
J = 33 -> 33.003
따라서 u에 대한 J의 도함수는 3이다
4. b에 대한 J의 도함수 구하기
v에 대한 도함수를 구함 -> a에 대한 도함수를 구함 -> u에 대한 도함수를 구함 -> b와 c에 대한 도함수를 구함 (연쇄 법칙)
* 코드 작성시 표기법
빨간색 화살표 방향으로 연쇄법칙을 이용해 derivatives 구한다
3. 로지스틱 회귀의 경사하강법
▶ 로지스틱 회귀의 구현
1. 입력값 x1, x2가 들어간다
2. 가중치 w1, w2 편향 b를 선형 결합해 z를 계산한다
3. z에 활성화 함수를 적용한다 -> y=1일 확률 a가 나온다
4. a에 임계함수를 적용해 0,1로 분류한다
▶ 로지스틱 회귀의 경사하강법 한 단계
- 경사하강법 : 손실 함수의 값이 최소가 되는 지점을 찾아가는 방법
- 로지스틱 회귀에서의 목적 : 매개변수 w와 b를 변경해서 손실을 줄인다
- 구하고자 하는 것 : 손실 함수의 도함수
1. da 구하기
2. dz 구하기
3. dw1, dw2, db 구하기
4. w1, w2, b 구하기
지금까지는 단일 샘플에 대한 경사하강법을 계산했다. 아래부터는 m개 샘플에 대한 경사하강법이다
4. m개 샘플의 경사하강법
▶ 로지스틱 회귀에서 비용 함수(cost function)
▶ 프로그래밍
- m개의 훈련 샘플 반복 + n개 특성 반복 (2개 for문)
- 이중 for문이 포함되어 있다 -> 계산 속도가 느리다
- 벡터화 (vectorization) 를 이용하면 for문을 사용하지 않고 처리할 수 있다