일단 이 부분을 읽고나서 여태 내가 알고 있었다고 생각한 딥러닝의 기초를 다시 생각하게 되었다. 특히 2.4 모델 성능 향상 챕터가 되게 도움이 되었고 잘 외워놔야겠다고 생각했다.
Q. 비정형 데이터와 정형 데이터에 대해 설명해보세요.
A. 정형 데이터란 class 하나하나가 고유한 정보를 가진 것을 말합니다. 보통 액셀이나 csv 의 형태로 저장이 되며 머신러닝 알고리즘이 정형 데이터에서 좋은 성능을 보입니다. 비정형 데이터란 class 또는 pixel 하나하나 의미 있지는 않고 고수준 정보를 따로 추출해야하는 형태를 말합니다. 보통 음성이나 이미지이며 딥러닝 알고리즘들이 좋은 성능을 보입니다.
Q. 배치 사이즈가 딥러닝 학습하는데 미치는 영향에 대해 말씀해보세요.
A. 현대의 대부분 딥러닝 알고리즘들은 mini batch gradient descent 알고리즘으로 진행되며 이 batch size 은 임의로 정할 수 있다. 배치가 크면 계산은 안정적으로 이루어지지만 학습 시간이 길어지는 다점이 있습니다.
정형 데이터와 비정형 데이터는 데이터의 형태를 구분하는 가장 기초적인 방법이다.
정형 데이터 : Structured data. 흔히 액셀 또는 csv. 데이터 하나하나가 정보를 가지고 있을 수 있기 때문에 하나하나를 이용해 분석해도 가능하다. 따라서 머신러닝 알고리즘들, XGBoost Random Forest 등이 정형 데이터에는 성능이 잘 나타난다.
비정형 데이터 : Unstructured data. 이미지, 음성 등의 형식이 따로 없고 픽셀 하나하나에는 의미가 없는 데이터. 이러한 데이터에는 머신러닝을 이용하면 좋은 성능을 기대하긴 힘들고 직접 고수준 정보, latent space 을 만들 수 있는 딥러닝 알고리즘이 적절하다.
이 책에는 (안타깝게도) keras 로 쓰여진 코드를 소개한다. keras 은 tensorflow 기반, tensorflow 은 theano 기반. keras 은 구글에서 개발했고 pytorch 은 페이스북에서 개발했다. 지금도 그렇지만 앞으로도 pytorch 가 우세할 것이다.
Dense : 벡터로 풀어 fully connected layer 만들기. flatten 으로 만들 수 있다.
활성화 함수에 대한 설명도 있으며 이는 다른 페이지에 잘 정리했다.
사실 이 부분이 좀 많이 중요하다고 생각한다.
학습이 시잘될때 가중치들을 랜덤한 작은 값들로 초기화 한다. 그리고 나서 지정된 batch 크기고 mini batch gradient descent 을 진행한다.
이때 batch 의 크기가 그면 계산은 안정적이지만 훈련 속도가 느려진다.
사실 이미지를 fully connected layer 만을 이용해 모델을 학습시킨다는 것 자체가 무리이긴 하다. 이미지는 필수적으로 합성곱 신경망, convolutional layer neural network 을 이용한다. 그리고 batch normalization 과 dropout 등을 사용하면 원래의 48% 정확도가 69%로 뛰어오른다.
나도 앞으로 모델 성능을 향상시킬 필요 있을때.
1. learning rate 을 손 본다.
2. batch rate 을 손 본다.
3. batch normalization 을 접목한다.
4. 모델을 바꾼다.
dropout 은 책에도 언급되었지만 쓸일이 아마 없을거다.