Deep Learning(17)
-
[밑바닥딥러닝] 17. 합성곱 신경망(CNN) (3)
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. 이번 장에서는 지난 장에서 구현했던 합성곱, 풀링 계층을 이용해서 합성곱 신경망을 구현하고, 성능 평가를 진행하도록 하자. 합성곱 신경망 구현 class SimpleConvNet: def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, hidden_size=100, output_size=10, weight_init_std=0.01): filter_num = conv_param['filter_num'] filter_size = conv_param['filte..
2021.10.19 -
[밑바닥딥러닝] 16. 합성곱 신경망(CNN) (2)
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. 풀링(Pooling) 풀링(Pooling)은 합성곱 연산을 마친 특징 맵에서 특정 윈도우마다의 최대값이나 평균값을 계산하여 또 하나의 특징맵을 만들어내는 과정을 말한다. 위 그림에서는 2x2 구간마다의 최대값을 뽑아내는 Max 풀링을 나타낸다. Max 풀링 외에도 해당 윈도우의 평균값을 계산하는 평균 풀링(average pooling)도 존재한다. 보통 풀링의 윈도우와 스트라이드는 같은 값으로 설정한다. 풀링 계층은 학습해야할 가중치가 없다는 특징이 있다. 합성곱 계층 구현 class Convolution: def __init__(self, W, b, stride=1, pad=0): self.W..
2021.10.19 -
[밑바닥딥러닝] 15. 합성곱 신경망(CNN) (1)
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. 이번 장에서는 합성곱 신경망(CNN)이란 무엇인지와 구체적인 메커니즘을 설명하고, 이를 파이썬 코드로 구현하여 손글씨 데이터셋을 통해 성능 평가까지 진행하도록 하겠다. 합성곱 신경망(CNN)이란? 출처 : https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53 합성곱 신경망(CNN)은 Convolution Neural Network의 준말로, 이미지 인식이나 음성 인식에서 흔히 사용되는 신경망이다. 위 그림에서 살펴볼 수 있듯이, 입력 데이터는 Conv..
2021.10.19 -
[밑바닥딥러닝] 14. 과대적합(Overfitting) 대응 - 규제, 드롭아웃
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. 과대적합(Overfitting)은 모델의 표현력이 복잡해지거나, 훈련 데이터 수가 적을 때 주로 발생한다. 모델이 과대적합되면 훈련 데이터에 대해서만 정확해지기 때문에 범용적인 모델을 만들 수 없어진다. 이번 장에서는 과대적합을 막기 위한 L1, L2 규제와 드롭아웃(dropout)이라는 방법에 대해서 알아보도록 하자. l1, l2 규제 출처 : https://medium.com/analytics-vidhya/l1-vs-l2-regularization-which-is-better-d01068e6658c L1 규제는 기존 손실값에 (람다(λ)값이 곱해진) 가중치의 절대값을 더한다. 가중치 중에 큰..
2021.10.16 -
[밑바닥딥러닝] 13. 모델 가중치의 초기화
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. 좋은 모델을 만들기 위해서는 모델 가중치를 처음에 적절히 설정하는 것이 중요하다. 가중치를 처음 초기화할 때 고르게 분포시키지 않고, 한쪽에 치우치게 하면 어떻게 될까? 위는 활성화 함수로 시그모이드 함수를 가진 모델의 가중치 초기화에 표준편차를 1로 설정했을 때 각 층에 나타난 저장된 활성화 값들을 나타낸다. 시그모이드 함수에 의해 0이나 1에 값이 쏠려있는데 학습 시 역전파의 기울기 값이 점점 작아지다 사라지는 기울기 소실 현상이 발생할 수 있다. 표준편차를 0.01로 작게 설정하면 위와 같이 된다. 대부분의 값이 0.5로 편중되어 있는데, 이 역시 모델의 표현력 관점에서 부정적인 현상이다...
2021.10.16 -
[밑바닥딥러닝] 12. 매개변수 갱신법
본 게시글은 한빛미디어 『밑바닥부터 시작하는 딥러닝, 사이토 고키, 2020』의 내용을 참조하였음을 밝힙니다. '좋은 가중치'를 찾기 위해서 우리는 손실 함수를 통해 각 가중치의 값을 지속적으로 갱신한다. 저번 장에서는 가중치의 값을 갱신하는 방법을 확률적 경사 하강법(SGD)를 통해 알아보았는데 SGD 이외에도 매개변수(가중치) 갱신에 다양한 방법을 응용할 수 있다. 다양한 매개변수 갱신법에 대해 알아보도록 하자. 확률적 경사 하강법(SGD) 출처 : https://www.geeksforgeeks.org/difference-between-batch-gradient-descent-and-stochastic-gradient-descent/ 확률적 경사 하강법(SGD)는 가장 기본적인 경사 하강법이라 할 수..
2021.10.16