AI 에서 어떻게 model 을 디자인 하는 것일까?
아래 영상을 보고 간단하게 keras 를 이용해서 ai model 을 만들어볼 수 있다.
- Make Your First AI in 15 Minutes with Python - YouTube
- 에러
ValueError: Input 0 of layer "sequential_1" is incompatible with the layer: expected shape=(None, 455, 30), found shape=(None, 30)
와 같은 에러가 발생하는데 code에서model.add(tf.keras.layers.Dense(256, input_shape=x_train.shape[1:], activation='sigmoid'))
로 변경하면 된다.x_train.shape
대신x_train.shape[1:]
를 사용하는 것이다.
여기서 궁금중은 그러면 model 을 만들때 사용한 layer를 어떤 기준으로 추가했느냐이다. 그리고 그 layer에 사용한 activation function 은 어떤 기준으로 선택했는가 이다.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(256, input_shape=x_train.shape, activation='sigmoid'))
model.add(tf.keras.layers.Dense(256, activation='sigmoid'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
그럼 어떻게 model 을 만들까?
이것에 대한 대답을 다음 글에서 확인할 수 있을 듯 하다.
- How To Improve Deep Learning Performance - MachineLearningMastery.com
- https://vikasing.github.io/nnfaq/FAQ3.html
이글은 deep learning 의 성능을 향상시키는 방법을 이야기하는데, 여러가지 방법이 있다.
- 데이터양을 증가시키는 방법
- 데이터를 normalize 하는 법
- 데이터를 시각화해서 모양을 봐보라, 그러면 이것이 가우스분포같은지, log분포같은지등을 보고, 필요한 변환을 해볼 수 있다.
- feature selection
- 문제를 구성하는 방법을 변경해봐라
- 여러 알고리즘을 통한 향상
- 선택한 알고리즘이 best가 아닐 수 있다. linear methods, tree methods, instance methods, 다른 neural network methods 들로 평가해봐라.
- 논문등 다른 사람들이 했던 비슷한 문제들을 찾아서 아이디어를 얻어라(리서치를 해라)
- 샘플링한 dataset을 다시 잘 sampling 한다. 예를 들어 train/test 로 나눴다면, train 에 해당하는 dataset이 문제의 대표성을 띠는지 등. 또는 작은 dataset을 사용하고, 그에 맞는 model을 선택해서 테스트해보고 큰 dataset으로 확장해 볼 수도 있다.
- 알고리즘 튜닝을 통한 향상
- 진단, overfitting인지 underfitting인지
- 가중치 초기화
- 학습률을 조정
- activation function
- network topology , 여러가지 구성을 테스트해본다. 1개의 많은 newrons를 갖는 hidden layer를 시도하던지, layer당 적은수의 neuron들을 갖는 deep network 를 시도하던지, 이 2개를 전부해보던지등.
- batches and Epochs, batch size를 변경하는 것은 gradient를 정의하고, weight들을 얼마나 자주 update하는지를 정한다. epoch는 배치마다 ‘network 에 노출되는 전체 dataset’ 이다.
- 정규화, overfitting을 억제하는 좋은 방법이다. dropout이라는 정규화기술도 있다.
- 최정화와 손실, 이전에 최적화는 ‘확률적 경사하강법(stochastic gradient descnet)’ 였지만, 이젠 많은 optimizer들이 있다.
- 빠른 정지(Early Stopping), 성과가 저하되기 시작하면 학습을 중단한다. 그리고 다른 sample을 만들던지 하는등으로 시간을 절약할 수 있다.
댓글 없음:
댓글 쓰기