딥러닝 - 딥러닝의 의미와 구조
딥러닝이란?
딥러닝은 머신러닝의 한 방법이다.
머신러닝에서 우리가 직접 학습시켜 주던 부분을 딥러닝에서는 인공신경망을 통해 머신이 직접 훈련하고 규칙을 찾아낸다.
딥러닝의 구조
위 그림을 보면 4개의 요소가 각각의 가중치를 고려하여 하나의 값이 도출된다.
처음에 들어가는 4개의 요소를 input 이라고 하고 input은 layer 라고 하지 않는다.
딥러닝에서 가중치는 머신이 알아서 정하기 때문에 알 수 없다.
인풋과 아웃풋 레이어 사이에 원하는 만큼 레이어를 추가할 수 있다.
그 사이에 있는 레이어는 히든 레이어라고 부르며 각 레이어의 노드 수도 지정할 수 있다.
노드 수가 지정되면 레이어에서는 각각 새로운 특징과 가중치로 데이터를 분석하고 다음 레이어로 넘겨준다.
그 과정에서 생성되는 새로운 특징과 가중치는 알 수 없으므로 그냥 머신을 믿는 수 밖에 없다.
결과 노드가 있는 층을 output layer 라고 한다.
Regression과 이진 분류 모델에서는 output layer 의 노드수가 1개로 고정적이지만 멀티 클래스 모델에서는 output layer의 노드수는 클래스의 개수와 같게 지정되어야 한다.
딥러닝 모델의 성능을 높이는 방법
1) 레이어 수, 노드 수 조정(activation 설정)
레이어 수와 노드 수에 따라 성능이 달라진다.
activation은 다음 레이어로 어떻게 넘길지 처리하는 방식을 지정하는 것이다.
수업에서는 히든 레이어에는 'relu'를, 멀티 클래스의 아웃풋 레이어에는 'soft_max' 를 사용했다.
2) optimizer 설정
optimizer는 parameter를 어떻게 조정할 지 정하는 부분이다.
compile과정에서 지정한다. 수업에서는 adam만 사용했다.
loss 도 함께 지정한다.
loss는 optimizer가 parameter를 조정할 때 판단하는 기준이 된다. 머신러닝의 scoring과 비슷하다고 볼 수 있다.
수업에서는 회귀의 경우 'mse', 이진분류의 경우 'binary_crossentropy', 멀티 클래스의 경우 'sparse_categorical_crossentropy'를 사용했다.
3) epochs, batch size 조정
epochs는 전체 데이터를 몇 번 반복 학습할 것인지, batch_size는 데이터를 몇 개씩 나누어서 학습할 것인지 정한다.