딥러닝을 처음 공부할 때 친구가 이 책으로 제일 처음 봤다고 하여 나도 봤다. 밑바닥부터 시작하는 딥러닝 1을 다 읽고 나니 어느 정도 딥러닝에 대한 개념이 생긴 것 같다. 활성화 함수, 매개변수 기울기 구하는 법, 출력 등등 신경망 구축에 대한 전반적인 얘기를 진행하고, 큰 그림을 볼 수 있게 해준다. 물론 다른 친구한테도 물어보니 본인은 텐서플로우로 구축해서 코드 2,30줄 내외라는데 여기는 케라스와 같은 라이브러리를 안 쓰고 오로지 numpy로만 구축을 하기 때문에 코드는 매우 길다. (마치 C로 stack이나 queue 구현하다가 C++에서 라이브러리 쓰는 그런 느낌일 듯하다.) 후반부로 갈 수록 클래스 구현하는 코드가 100줄을 넘어가기도 하지만, 앞에서부터 차근차근 본다면 전체적인 그림을 이해..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bgSSuM/btqTSUFjn04/yjwXdWPH9POUgKTKgSniE0/img.png)
CNN (합성곱 신경망)은 이미지 인식, 음성 인식 등 다양한 곳에서 사용됩니다. CNN 네트워크를 구현하기 위해서는 합성곱 계층과 폴링 계층이 사용됩니다. 1. 합성곱 계층 완전연결 계층 (Affine 계층)의 문제점은 데이터 형상이 무시된다는 것입니다. 이전의 MNIST 같은 경우도 28 * 28 array를 1줄짜리 784개의 데이터로 변환했습니다. 이러한 문제를 해결하기 위해 합성곱 계층을 사용합니다. - 필터 필터는 합성곱 연산 시 이전의 가중치와 같은 역할을 하는 것입니다. - 합성곱 연산 합성곱 연산은 다음과 같습니다. 필터를 입력데이터에 맞춥니다. 그리고 원소별로 곱합니다. 예를 들어 위와 같이 되는 것입니다. - 패딩 위의 예에서 입력 데이터는 4x4 이지만 결과는 2x2입니다. 이것이 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/BD8Of/btqTENg0Mr3/b4NIbxOMZCo8swwJorvcRk/img.png)
하이퍼파라미터는 뉴런 수 (노드 수), 배치 크기, 학습률, 가중치 감소 등을 말합니다. 하이퍼파라미터의 값 또한 적절한 값을 사용해야 학습이 잘 됩니다. 하이퍼파라미터를 효율적으로 찾아봅시다. 1. 검증 데이터 검증 데이터를 이용해 하이퍼파라미터를 조정합니다. 검증 데이터는 훈련 데이터의 20% 정도를 이용하여 하이퍼파라미터를 조정합니다. - 훈련 데이터 : 매개변수 학습 - 검증 데이터 : 하이퍼파라미터 성능 평가 - 시험 데이터 : 신경망 범용 능력 평가 2. 하이퍼파라미터 최적화 하이퍼파라미터를 대략적인 값으로 지정합니다. 그 다음 최적의 값을 찾고, 그 값의 범위 내에서 또 다시 최적의 값을 찾는 것을 반복하는 것입니다. 순서는 다음과 같습니다. - 하이퍼파라미터 값의 범위를 설정한다. - 설정..
오버피팅은 보통 다음과 같은 경우에 일어납니다. 1. 매개변수가 많고 표현력이 높은 모델 2. 훈련 데이터가 적을 때 다음의 방법으로 오버피팅을 방지합니다. 1. 가중치 감소 큰 가중치에 대해 그에 상응하는 패널티를 부과하는 방법입니다. 오버피팅은 가중치 매개변수 값이 커서 발생하는 경우가 많습니다. 신경망의 목적은 손실 함수 값을 줄이는 것입니다. 이를 위해 가중치의 L2 norm ( W=(w1, w2, .., wn) => L2=sqrt(w1^2 +w2^2 + ... +wn^2) )를 손실함수에 더합니다. 정확히는 가중치가 W일 때, L2 norm에 따른 가중치 감소는 (1/2)*lambda*(W^2) 이고 이를 손실함수에 더하는 것입니다. lambda는 정규화의 세기를 조절하는 파라미터입니다. 2. ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cbMHAH/btqTPznq4uk/62f3YOVIq433lRu0kGERl1/img.png)
배치 정규화는 신경망의 각 층의 활성화값의 분포가 고르게 퍼지도록 강제하는 것입니다. 배치 정규화를 이용한다면, 다음과 같은 이점이 있습니다. 1. 학습을 빠르게 진행 2. 가중치 초기값에 크게 의존하지 않는다. 3. 오버피팅을 억제한다. 배치 정규화는 미니배치를 단위로 합니다. 수식은 다음과 같습니다. B={x1,x2,...}는 미니배치, mu는 평균, sigma는 표준편차입니다. 그리고 미니배치 값을 hat값으로 변환합니다. 그리고 배치 정규화 계층마다 확대와 이동 변환을 수행합니다. 수식은 다음과 같습니다. gamma는 확대, beta는 이동을 담당합니다. 처음은 gamma=1, beta=0으로 잡은 후 학습을 통해 적합한 값으로 조정합니다.