Post

[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로 실습을 진행했다.

    현재는 크게 TensorFlowPyTorch의 양대산맥구조. 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 정리

 선형 회귀로지스틱 회귀(이중 분류)다중 분류
activationlinearsigmoidsoftmax
lossmsebinary_crossentropycategorical_crossentropy
metrcics-accuracy, …accuracy, …

optimizer는 일단 ‘adam’을 쓰는 걸로!

sigmoid나 softmax에 대해서 대강 알고는 있지만, 정확히 알기 위해서 다음에 따로 포스트를 작성 해야겠다!

This post is licensed under CC BY 4.0 by the author.

[KT Aivle 3기 AI] 18일차. 머신러닝 (5) 앙상블 알고리즘

[KT Aivle 3기 AI] 20일차. 딥러닝 (2) 히든레이어