[KT Aivle 3기 AI] 19일차. 딥러닝 (1) 딥러닝 기초
KT Aivle School 3기 AI 19일차
- 강사 : 김건영 강사님
- 주제 : 딥러닝 공부를 위한 기본 토대 쌓기
- 내용 :
- TensorFlow & Keras 코딩 스타일을 익히기
- Neural Network 구조를 이해하기
- 오늘은 선형회귀 & 로지스틱 회귀 & 멀티 클래스 분류를 Keras Sequential API로 구현해보았다.
딥러닝
- 지금의 딥러닝은 연결주의 학파 관점에서의 딥러닝이라고 한다.
찾아보니 기호주의와 연결주의 학파가 있다고 하는데, 기호주의는 현실의 모든 것을 ‘기호화’ 할 수 없었기 때문에 제한적인 용도로 밖에 사용하지 못해서 1950년대~1980년대 까지 전성기를 맞고 쇠락의 길을 걸었다고 한다. 연결주의는 뉴련의 연결을 모방한 신경망 기반 인공지능으로 현재는 연결주의의 전성기라고 한다.
[출처][https://adondevas.tistory.com/entry/7번째-이야기] - 딥러닝은 노드(뉴런)들이 엣지들로 연결되어 있는 구조이다.
- 노드(뉴런)은 개별적인 특징들을 이야기하고, 엣지들에는 가중치가 있는 것으로 표현할 수 있다(?)
- 이러한 딥러닝의 FrameWork 중 TensorFlow와 Keras로 실습을 진행했다.
현재는 크게
TensorFlow
와PyTorch
의 양대산맥구조. keras는 TensorFlow에 합쳐졌다.
실습
- 딥러닝 네트워크를 구현하기 위해 Sequential API와 Functional API 방식이 있는데, 오늘은 Sequential API 방식으로 진행했다.
- 선형회귀, 로지스틱 회귀(이중 분류), 다중 분류에 대한 실습을 진행했다.
- Sequential API로 진행할 때, 전체적인 코드는 비슷했다.
- 다만, activation function과 complie할 때의 loss와 metrics 값 정도가 달랐다. 다중분류는 one hot encoding 까지.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.utils import to_categorical # One-Hot Encoding
x = ~ # n개의 feature가 있다고 가정
y = ~ # 선형회귀와 이중 분류는 그대로 진행
y = to_categorical(y, m) # 다중 분류는 One-Hot Encoding 진행, class 개수 m개
# 1. 세션 초기화
keras.backend.clear_session()
# 2. 모델 발판 만들기
model = keras.models.Sequential()
# 3. 모델 쌓기
model.add( keras.layers.Input(shape=(n, )) )
## 목적에 맞게 아래 코드 중 하나 씩 써야함.
model.add( keras.layers.Dense(1) ) # 선형회귀
model.add( keras.layers.Dense(1, activation='sigmoid') ) # 로지스틱 회귀(이중 분류)
model.add( keras.layers.Dense(m, activation='softmax') ) # 다중 분류 class가 m개
# 4. 모델 컴파일
## 목적에 맞게 아래 코드 중 하나 씩 써야함.
model.compile(loss='mse', optimizer='adam')
model.compile(loss='binary_crossentropy', metrics=['accuracy'], optimizer='adam') # 로지스틱 회귀(이중분류)
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam') # 다중 분류
# 5. 모델 구조 확인
model.summary()
# 6. 모델 훈련
model.fit(x, y, epochs=10)
# 7. 예측
y_pred = model.predict(x)
문제 종류별 activation function, loss, metrics 정리
선형 회귀 | 로지스틱 회귀(이중 분류) | 다중 분류 | |
---|---|---|---|
activation | linear | sigmoid | softmax |
loss | mse | binary_crossentropy | categorical_crossentropy |
metrcics | - | accuracy, … | accuracy, … |
optimizer는 일단 ‘adam’을 쓰는 걸로!
sigmoid나 softmax에 대해서 대강 알고는 있지만, 정확히 알기 위해서 다음에 따로 포스트를 작성 해야겠다!
This post is licensed under CC BY 4.0 by the author.