활성화 함수 (activation)
신경망 층의 선형 방정식의 계산 값에 적용하는 함수.
출력층에 적용하는 활성화함수는 이진분류일 경우 sigmoid, 다중 분류일 경우 softmax, 은닉층의 활성화 함수는 주로 sigmoid, ReLU 함수를 쓴다.
softmax : 여러개의 선형 방정식의 출력값을 0~1로 압축하고 전체 합이 1이 되도록 만드는 함수.
sigmoid
뉴런의 출력 z값이 무한하게 큰 음수일 경우 0을 , 무한하게 큰 양수일 경우 1을 출력해 결국 z값을 0과 1 사이로 압축한다.
ReLU
입력이 양수일 경우 마치 활성화 함수가 없는 것처럼 그냥 입력을 통과시키고 음수일 경우에는 0으로 만드는 함수.
손실 함수 (loss)
최적화 함수 (optimizer)
경사하강법 옵티마이저
sgd = keras.optimizers.SGD(learning_rate=0.1)
(learning_rate 기본값 : 0.01)sgd = keras.optimizers.SGD(momentum=0.9)
sgd = keras.optimizers.SGD(momentum=0.9, nesterov=True)
적응적 학습률 옵티마이저
sklearn
sc = SGDClassfier(loss='log', max_iter=5)
sc.fit(train_scaled, train_target)
sc.score(val_scaled, val_target)
keras
dense = keras.layers.Dense(10, activation='softmax', input_shape=(784, ))
model = keras.Sequential(dense)
model.complie(loss='sparse_categorical_crossentropy', metrics='accuracy')
model.fit(train_scaled, train_target, epochs=5)
model.evaluate(val_scaled, val_target)
층을 추가하는 방법
model = keras.Sequential([
keras.layers.Dense(100, activation="sigmoid", input_shape=(784, ), name="hidden"),
keras.layers.Dense(10, activation="softmax", name="output")
], name = 'model')
model = keras.Sequential()
model.add(keras.layers.Dense(100, activation="sigmoid", input_shape=(784, )))
model.add(keras.layers.Dense(10, activation="softmax", name="output"))
Convolution Neural Network의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 Convolution이라는 전처리 작업이 수행되는 Neural Network모델이다.
CNN의 구조
[출처 : https://sungwookkang.com/1408]
특정 이미지의 특징을 추출하고(convolution), 특징을 강화하고 이미지의 크기를 축소하는(pooling)과정의 반복이다.
Convolution
2차원 이미지에 특정 크기의 필터를 적용시켜 이미지의 패턴을 찾아 처리하는 방법
[출처 : 허재필 교수님 컴퓨터비전개론 수업자료]
3X3 크기의 필터(커널)을 이미지에 적용시킨 모습
어떤 모양의 필터를 적용시키냐에 따라 이미지의 특징이 다르게 출력된다.
padding
이미지에 필터를 적용시키면 자연스럽게 출력 이미지의 사이즈가 줄어들게 된다. 3*3 필터를 적용시킨다면 가로 세로 크기가 2씩 줄어들 것이다. 이것을 해결하기 출력이미지 주변을 특정값으로 채우게 되는데 이것이 padding이다.
0으로 채우는 zero-padding이 주로 쓰인다고 한다.
pooling
이전단계의 convolution 과정을 통해 많은 수의 이미지가 생성되었다. 하지만 이미지가 많아지면 처리해야할 값이 너무 많아져 연산속도나 다른 부분에서 문제가 생긴다. 이를 해결하기 위해 고안된 방법이 pooling이다. 결국 결과이미지의 크기를 줄여주는 것이 pooling의 목적이다.