딥러닝15 [비전공자용]합성곱 신경망 (CNN) - 합성곱 계층 & 풀링 계층 합성곱 신경망 Convolutional Neural Network, CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용됩니다. 이제부터 CNN에 대해서 낱낱이 살펴보도록 합시다. # CNN 전체 구조 지금까지 공부했던 신경망과 CNN이 특별히 다른 점은 CNN에는 합성곱 계층 Convolutional layer 과 풀링 계층 Pooling layer 이 새롭게 등장한다는 점입니다. 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었습니다. 이를 완전연결 fully-connected라고 하고, 완전히 연결된 계층을 Affine 계층이라고 합니다. 완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU/Sigmoid 계층이 이어져 있습니다. 위 그림에서는 'Affine-ReL.. 2020. 7. 10. [비전공자용] [Python] 하이퍼파라미터 최적화 Hyperparameter Optimization 신경망에는 다수의 하이퍼파라미터가 등장합니다. 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률, 가중치 감소 등이 하이퍼파라미터입니다. 하이퍼파라미터의 값을 어떻게 결정하느냐에 따라 학습 모델의 성능이 크게 영향을 받습니다. 그럼 하이퍼파라미터의 값을 최대한 효율적으로 탐색하는 방법을 알아보겠습니다. # 검증 데이터 하이퍼파라미터를 다양한 값으로 설정하고 검증하기 전에 검증하는 과정, 성능을 평가하는 과정에 대해 먼저 소개하겠습니다. 하이퍼파라미터의 성능을 평가할 때는 시험 test 데이터를 사용하면 안됩니다. 시험 데이터를 사용하면 하이퍼파라미터가 시험 데이터에 오버피팅됩니다. 시험 데이터에만 적합하게 조정되어 다른 데이터에는 적용하지 못하는 범용 성능이 떨어지는 모델이 될 수 있기 때문입니.. 2020. 7. 10. [비전공자용] 오버피팅 Overfitting 억제법 - 1.가중치 감소 2.드롭아웃 Dropout # 오버피팅 Overfitting 현상 오버피팅은 주로 다음 2 경우에 발생합니다. 매개변수가 많고 표현력이 높은 모델 훈련 데이터가 적음 오버피팅이 어떻게 발생하는 지 알아보기 위해 MNIST 데이터셋을 이용해서 학습을 시켜보겠습니다. 원래 60,000개인 MNIST 데이터셋의 훈련 데이터 중 300개만 사용하고, 7층 네트워크를 사용해서 네트워크의 복잡성을 높여서 오버피팅이 일어나게끔 환경을 조성합니다. 각 층의 뉴런은 100개이고 활성화 함수로 ReLU를 사용합니다. 파이썬 코드는 아래와 같습니다. # coding: utf-8 import os import sys sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as np im.. 2020. 7. 10. [비전공자용] [Python] 배치 정규화 Batch Normalization 배치 정규화 2015년에 제안된 방법이지만, 많은 연구자와 기술자들이 사용하고 그 효과가 입증된 방법입니다. 배치 정규화를 이용하는 이유들은 다음과 같습니다. 학습을 빨리 진행할 수 있다. (학습 속도 개선) 초깃값에 크게 의존하지 않는다. (골치 아픈 초깃값 선택 장애를 겪지 않아도 됨) 오버피팅을 억제한다. (드롭아웃 등의 필요성 감소) # 배치 정규화란? 그럼 배치 정규화의 기본 아이디어를 알아봅시다. 배치 정규화는 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것을 목표로 합니다. 그래서 데이터 분포를 정규화하는 '배치 정규화 Batch Norm 계층'을 신경망에 삽입해서 이용합니다. 학습 시 미니배치를 단위로 정규화하는 방식을 사용합니다. 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화.. 2020. 7. 10. [비전공자용] [Python] Xavier Initialization (Xavier 초기화) & He Initialization (He 초기화) 신경망 학습에서 가중치 초깃값을 어떻게 정하느냐에 따라 신경망 학습이 성공할 수도 있고 실패할 수도 있습니다. 은닉층 Hidden Layer의 활성화값(활성화 함수의 출력 데이터, 계층 사이를 흐르는 데이터)의 분포를 잘 관찰하면 가중치를 어떻게 설정해야 좋을지 알 수 있습니다. 은닉층이 5개이고, 각 층의 뉴런이 100개씩 존재한다고 합시다. 입력 데이터로서 1,000개의 데이터를 표준정규분포로 랜덤하게 생성하여 5층 신경망에 흘리고 각 층의 활성화값을 비교해 볼 것 입니다. 활성화 함수로는 시그모이드 Sigmoid 함수를 사용하고, 각 층의 활성화 결과를 activations 변수에 저장합니다. 가중치 초깃값을 표준정규분포로 설정하고 표준편차를 변화시키면서 활성화 결과를 히스토그램으로 보겠습니다. 파.. 2020. 7. 10. [비전공자용] [Python] 모멘텀, AdaGrad, Adam 최적화기법 이번 포스트에서는 모멘텀, AdaGrd, Adam 최적화 기법에 대해 상세히 알아볼 겁니다. 1. 모멘텀 Momentum 모멘텀은 운동량을 뜻하는 단어로, 신경망에서의 모멘텀 기법은 아래 수식과 같이 표현할 수 있습니다. SGD에서와 마찬가지로 W 는 갱신할 가중치 매개변수, L은 손실함수를 나타내고 η 는 학습률 learning rate, ∂L/∂W은 W 에 대한 손실함수의 기울기를 나타냅니다. SGD와 달리 변수 v가 등장하는데 물리에서 운동량을 나타내는 식은 p = mv, 질량 m, 속도 v이므로 위 수식에서도 v는 속도를 의미합니다. 매개변수 α를 v에 곱해서 αv 항은 물체가 아무 힘도 받지 않을 때도 서서히 하강시키는 역할을 하게 됩니다. 물리에서의 마찰력이라고 생각하면 편할 것 같습니다. 하.. 2020. 7. 9. 이전 1 2 3 다음 반응형