상세 컨텐츠

본문 제목

인공신경망

연구실

by myeongjaechoi 2024. 1. 24. 19:49

본문

이번 장에서는 행렬의 곱셈과 덧셈이 중요하다. 행렬의 곱셈과 덧셈을 공부하지 않았다면, 공부하고 보길 추천한다.

행렬의 곱셈으로 간단하게 나타낼 수 있다. 최종출력에서는 softmax를 사용할 것이다.

이 문제를 예제 코드로 구현을 하면

np.dot()는 행렬곱셈을 나타낸다.

이것을 처음 그림에 대입을 해서 보면 조금 더 이해하기가 쉽다.

W1, b1, W2, b2 까지만 표현하고 W3, b3는 생략했다.

이것의 최종출력을 하기위하여 softmax를 사용할 것이다. 

softmax 변환

하지만, 이렇게만 사용하게 된다면 값이 너무 커져, overflow가 발생할 가능성이 높다.

overflow 발생

(a1,a2,...,an)과 (a1+C,a2+C,...,an+C) 가 같다는 것을 사용하면 overflow가 발생하는 것을 방지할 수 있다.

e^c승이 약분이 되면서 처음 식과 동일하게 된다는 것을 증명했다.

이것을 코드로 나타내면,

x.ndim은 나중에 batch처리 할 때 다시 공부하도록 하고, if문을 제외한 x = x -np.max(x)를 보도록 하자.

교재 : 밑바닥부터 시작하는 딥러닝 (저자 : 사이토 고키 / 번역 : 이복연 / 출판사 : 한빛미디어)

https://www.hanbit.co.kr/store/books/...

코드 : https://github.com/WegraLee/deep-lear...

강좌 홈페이지 : https://sites.google.com/site/kyungho...

'연구실' 카테고리의 다른 글

손실함수  (0) 2024.01.27
신경망 구현  (0) 2024.01.26
MNIST  (0) 2024.01.25
활성화 함수  (0) 2024.01.24
퍼셉트론  (1) 2024.01.24

관련글 더보기