앞선 수업에서 레모네이드 수요를 퍼셉트론을 이용하여 예측하였습니다.
이 퍼셉트론의 가중치와 편향의 수정과정을 워크북으로 제공해주셨는데, 이론적으로 배웠던 내용을
실제로 값을 변화시키며 눈으로 직접 볼 수 있었기에 매우 좋았습니다.
실제 다른 딥러닝 기법들도 기초 과정은 이 워크북의 수정과정과 거의 비슷하기에 도움된다고 생각하였습니다.
강사님이 올려주신 워크북 링크
딥러닝 워크북
회귀 (mse) 온도,판매량,W,B,Loss,예측 (w*온도+b),예측 - 판매량,(예측 - 판매량)^2 21,42,1.969,0.526,0.036891,41.875,-0.125,0.015625 22,44,dLoss / dW,dLoss / dB,prevLoss,43.844,-0.156,0.024336 23,46,122.2291,5.2961,7.028832,45.813,-0.187,
docs.google.com
1) 초기 설정을 다음과 같이 하였습니다.
가중치와 편향의 초기값은 랜덤으로 시작하고나서 Loss를 줄이는 방향으로 수정되며 진행되기에 초기값 생성기와
초기 Loss를 남겨두고 나머지는 0으로 하였습니다.

2) 랜덤으로 생성된 초기 값을 w와 b에 적어준 후 history에 그 값을 적어준다.
이 때 "값만 붙혀넣기"로 해야 오류가 없습니다.

초기값 생성기는 값을 복사할 때마다 변하기 때문에 w와 b를 동일한 값으로 할 필요가 없습니다
(어차피 초기값은 랜덤 으로 지정하기 때문).
3) 이제 가중치와 편향을 수정하는 과정입니다.
워크북에서 학습률(dt)은 0.0001로 고정하였습니다.
먼저 prevLoss에 앞서 계산한 Loss의 값을 붙혀넣어 줍니다.
모델의 학습방향은 MSE척도를 사용하는 Loss를 줄이는 방향입니다.
W를 학습률만큼 증가하였을 때 Loss가 줄어든다면 W를 증가하는 방향으로 학습시켜야 하므로 먼저 0.0001만큼
증가시켜보겠습니다.
Loss의 값이 1750.6688에서 1750.476으로 소폭 감소하였습니다. 따라서 w를 증가시키는 방향으로 다음 w를
결정해야 합니다.

다음 w 를 결정하는 방법은 기존 w에 dLoss/dW * dt를 빼서 결정하게 됩니다. dLoss/dW는 w의 변화에 따른 Loss의
변화량인데, (Loss - prevLoss)/dt 로 구할 수 있습니다. 즉, dLoss/dt의 값을 D4칸에 값을 복사해줍니다.
그러면 아래의 그림과 같이 next W가 계산됩니다.

다시 정리해보면 w값은 원래 0.16이였고, 학습률과 Loss의 변화량에 따라 다음 w 값은 2.088임을 알 수 있습니다.

다음은 편향을 수정해 보겠습니다. 가중치를 수정할 때와 마찬가지로 0.0001을 더하고 미분값을 활용하여 다음
편향값을 계산하였습니다.

4) 새로 결정된 W와 B 값으로 Loss를 계산하는 과정입니다.
위의 그림에서 나온 next W와 nextB의 값이 결정되었으므로 D2와 E2 셀의 값으로 바꿔줍니다.
그 후 새로운 Loss와 W, B값을 history에 값을 적어줍니다.

5) Iteration 2
다음 2회차 가중치 및 편향 수정작업을 계산해보겠습니다.
앞선 방법과 동일한데, W와 B의 값이 너무 길기 때문에 소수점 3째자리까지만 남기고 지우겠습니다.
그 후, Loss 값을 prevLoss에 적어주었습니다.

앞서 한 것 처럼 가중치를 먼저 수정합니다. W에 0.0001을 더해주었습니다.

그런데 앞과 달리 Loss가 증가하였습니다. 우리는 Loss가 감소하는 방향으로 학습을 시켜야 하기 떄문에 다음 W는 증가하는 것이 아니라 감소하여야 한다는 사실을 알 수 있습니다.
앞에서 한 것과 동일하게 dLoss/dt를 dLoss/dW로 값을 복사해주면 다음 W 값이 계산되어 나옵니다.
아래 그림과 같이 nextW가 감소되었음을 알 수 있습니다.

마찬가지로 B도 계산을 해줍니다. 편향 또한 0.0001을 더했을 때 Loss 값이 증가하였기 때문에 다음 편향 값 또한 감소해야 합니다.

W와 B값을 새로 업데이트 해주고 나온 Loss값을 history에 적어줍니다.

이와 같은 방법을 만족할만한 Loss 수준까지 반복하면 학습이 중단됩니다.
'Data Science > 생활코딩(2021.01.04~2021.01.15)' 카테고리의 다른 글
| 레모네이드 딥러닝 실습 (0) | 2021.01.05 |
|---|