본문 바로가기

머신러닝9

[비전공자용] CNN (합성곱 신경망)에서 필터를 적용한다는 것의 의미 이해하기 이번 포스트에서는 합성곱 신경망에서 필터가 어떻게 작용하는지 이해하기 쉽게 설명해보려 한다. 신경망 학습을 통해서 loss손실을 줄이는 방향으로 이 가중치가 변화하게 된다. 먼저 그 변화를 자세히 살펴보자. 1. 처음에 가중치를 설정할 때는 랜덤으로(무작위로) 값을 정하기 때문에 의미없는 값들로 이루어져 있다. 아무 규칙이 없다는 말이다. 2. 학습을 거치면서 필터는 규칙성 있는 형태로 변화한다. 3. 학습된 필터 몇 개를 선택해서 입력받은 이미지에 합성곱 처리(Test)를 해보면 4. 각각의 필터 특징에 맞게 어떤 특징이 부각되어 이미지를 출력한다. 이해를 돕기 위해 예를 들어보자. CNN을 구성하는 한 합성곱 계층의 가중치가 (30, 1, 5, 5)의 형상을 가지고 있다고 하자. ☞ 통상적으로 필터 .. 2020. 7. 29.
[비전공자용] [Python] CNN 합성곱 신경망 구현하기 자자 이제 지금까지 공부했던 합성곱 계층과 풀링 계층을 이용해서 손글씨 숫자를 인식하는 CNN 합성곱 신경망을 본격적으로 구현해보도록 하겠습니다!!!!!! 합성곱 계층과 풀링 계층에 대해 개념적으로 공부하고 싶으신 분들은 아래 포스트를 참고하세요. 2020/07/10 - [Computer Science/Deep Learning] - [비전공자용]합성곱 신경망 (CNN) - 합성곱 계층 & 풀링 계층 아래 구조의 계층으로 구성되어 있는 CNN을 SimpleConvNet이라는 클래스로 구성해봅시다. 입력데이터 -----> Convolution -> ReLU -> Pooling -----> Affine -> ReLU -----> Affine -> Softmax ------> 결과 SimpleConvNet 신경.. 2020. 7. 28.
[비전공자용] [Python] CNN(합성곱 신경망) - 풀링 계층 구현 이번 포스트에서는 지난 포스트(CNN-합성곱 계층 구현)에 이어서 2020/07/28 - [Computer Science/Deep Learning] - [비전공자용] [Python] CNN(합성곱 신경망) - 합성곱 계층 구현 CNN에서의 풀링 계층을 Python으로 구현해보려 합니다. 여기서는 코드를 구성하는 것만 다루기 때문에 개념적으로 공부하고 싶으신 분들은 아래 포스트를 참고해주세요. 2020/07/10 - [Computer Science/Deep Learning] - [비전공자용]합성곱 신경망 (CNN) - 합성곱 계층 & 풀링 계층 2. 풀링 계층 구현 합성곱 계층과 마찬가지로 풀링 계층에서도 im2col 함수를 사용해서 입력 데이터를 전개합니다. 하나 차이점이 있다면, 풀링 계층에서는 채널 .. 2020. 7. 28.
[비전공자용] [Python] CNN(합성곱 신경망) - 합성곱 계층 구현 이전 포스트에서 합성곱 계층과 풀링 계층에 대해 이론적으로 살펴보았습니다. 2020/07/10 - [Computer Science/Deep Learning] - [비전공자용]합성곱 신경망 (CNN) - 합성곱 계층 & 풀링 계층 [비전공자용]합성곱 신경망 (CNN) - 합성곱 계층 & 풀링 계층 합성곱 신경망 Convolutional Neural Network, CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용됩니다. 이제부터 CNN에 대해서 낱낱이 살펴보도록 합시다. # CNN 전체 구조 지금까지 공부했던 신경망�� huangdi.tistory.com 지금부터 두 계층을 직접 Python 코드로 구현하고자 합니다. 1. 합성곱 계층 구현 합성곱 계층에서는 image to column (통상적으로.. 2020. 7. 28.
[비전공자용] [Python] 하이퍼파라미터 최적화 Hyperparameter Optimization 신경망에는 다수의 하이퍼파라미터가 등장합니다. 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률, 가중치 감소 등이 하이퍼파라미터입니다. 하이퍼파라미터의 값을 어떻게 결정하느냐에 따라 학습 모델의 성능이 크게 영향을 받습니다. 그럼 하이퍼파라미터의 값을 최대한 효율적으로 탐색하는 방법을 알아보겠습니다. # 검증 데이터 하이퍼파라미터를 다양한 값으로 설정하고 검증하기 전에 검증하는 과정, 성능을 평가하는 과정에 대해 먼저 소개하겠습니다. 하이퍼파라미터의 성능을 평가할 때는 시험 test 데이터를 사용하면 안됩니다. 시험 데이터를 사용하면 하이퍼파라미터가 시험 데이터에 오버피팅됩니다. 시험 데이터에만 적합하게 조정되어 다른 데이터에는 적용하지 못하는 범용 성능이 떨어지는 모델이 될 수 있기 때문입니.. 2020. 7. 10.
[비전공자용] [Python] 배치 정규화 Batch Normalization 배치 정규화 2015년에 제안된 방법이지만, 많은 연구자와 기술자들이 사용하고 그 효과가 입증된 방법입니다. 배치 정규화를 이용하는 이유들은 다음과 같습니다. 학습을 빨리 진행할 수 있다. (학습 속도 개선) 초깃값에 크게 의존하지 않는다. (골치 아픈 초깃값 선택 장애를 겪지 않아도 됨) 오버피팅을 억제한다. (드롭아웃 등의 필요성 감소) # 배치 정규화란? 그럼 배치 정규화의 기본 아이디어를 알아봅시다. 배치 정규화는 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것을 목표로 합니다. 그래서 데이터 분포를 정규화하는 '배치 정규화 Batch Norm 계층'을 신경망에 삽입해서 이용합니다. 학습 시 미니배치를 단위로 정규화하는 방식을 사용합니다. 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화.. 2020. 7. 10.
반응형