머신러닝야학-Tensorflow (python) 핵심요약-5

데이터타입이 다르면 무한한 오류를 가져올 수 있다

딥러닝 데이터의 전처리 과정

데이터 타입의 변경

원핫 인코딩이 안된다? 데이터의 타입을 확인하자!

원핫 인코딩, 즉 카테고리의 범주화가 필요한 데이터인데, 품종 이라는 변수가 int 값으로 되어 있어서 원핫 인코딩이 되지 않는 상태?

int(정수형)타입을 category(범주형)타입으로 바꿔주자.

데이터의 타입을 바꾸고 나니 원핫인코딩이 잘 되는 것을 확인할 수 있다.

데이터 NA 값의 처리

데이터의 값이 중간에 NA 되어있다면, count 이후 평균값을 na에 넣어준다

학습이 더 잘되게 만드는 Tip

BatchNormalization layer 활용

학습을 다 마치고 나서도 Loss가 원하는 만큼 떨어지지 않는다면, BatchNormalization Layer를 각 Layer의 층마다 배치시키면, 같은 모델임에도 불구하고 학습 효과를 더욱 증대시킬 수 있다.

개선 전)

1
2
3
4
5
6
7
X = tf.keras.layers.Input(shape=[13])
H = tf.keras.layers.Dense(8, activation='swish')(X)
H = tf.keras.layers.Dense(8, activation='swish')(H)
H = tf.keras.layers.Dense(8, activation='swish')(H)
Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

개선 후)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
X = tf.keras.layers.Input(shape=[13])

H = tf.keras.layers.Dense(8)(X)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

개선 전과 개선 후의 Loss차이를 확인할 수 있다.

실제로 모델을 BatchNormalization 으로 개선한 결과,
개선 전에는 1000번을 학습해도 20이하로 떨어지지 않았지만,
개선 후에는 200번 정도를 학습했을 때, 개선 전의 Loss 값과 비슷하게 나왔고, 1000번을 학습했을 땐 훨씬 낮은 정도의 Loss 값을 보였다.

후기

일주일 간, 머신러닝의 기본교양강의부터 python으로 딥러닝을 구현하는 실습예제까지 진행해 보았다.

처음 머신러닝과 딥러닝에 대해 잘 모를 땐, 대학시절 들었던 빅데이터 수업 때문에, 여러 분석 모델들의 수학적 난해함에 지레 겁을 먹고, 어렵단 인식이 강했는데,
머신러닝도 결국, 하면 된다 라는 것을 깨닫게 되었다.

어려워 보이는 알고리즘도, 모델링도,
코딩 라이브러리도 결국 사용법을 배우고, 과정을 이해하고, 활용하는 과정의 연속 일 뿐인 것이다.

난해함은 잠시 접어두고, 완전히 1000% 이해하지 못하고 이용해보더라도 어느 누구도 뭐라하지 않는다.
즉, 시그모이드 모형과 소프트맥스 수학식을 수학적으로 유도하지 못한다고 해서, 딥러닝을 못하는게 아닌 것이다. 그냥 하면 된다!! 왜냐? 우리에겐 구글님이 있으니깐..ㅎ

앞으로도 새로운 문제를 직면할 때마다, 딥러닝으로 이 문제를 해결 할 수 있겠다. 라는 자신감을 심어주는 강의를 들은 것 같아, 내 자신도 굉장히 뿌듯함을 느꼈고, 이런 좋은 강의와 기회를 마련해준 머신러닝야학 강사 및 스탭 분들에게도 감사를 드린다.

출처


생활코딩 Deep Learning Tensorflow (python) 강의

https://opentutorials.org/course/4570

생활코딩의 딥러닝 교육컨텐츠는 CCL 라이선스 BY를 따르고 있습니다.

댓글