๐Ÿ“ AI & Bigdata/AI & ML & DL

[DL] Deep Learning ํ•™์Šต ๊ธฐ๋ณธ ๊ฐœ๋…(1)

SOIT 2022. 7. 27. 20:06
"Google ๊ณต์ธ! ํ…์„œํ”Œ๋กœ(TensorFlow) ๊ฐœ๋ฐœ์ž ์ž๊ฒฉ์ฆ ์ทจ๋“" ๋‚ด์šฉ์„ ์ธ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Google Colab ์‚ฌ์šฉํ•˜๊ธฐ

: GPU ์ง€์›(๋”ฅ๋Ÿฌ๋‹ ์‹ค์Šต ํ™˜๊ฒฝ ์ง€์›)

 

1. Tool

  • ํ…์„œํ”Œ๋กœ์šฐ(Tensorflow): ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ
  • ํŒŒ์ดํ† ์น˜(pytorch): Tensorflow์˜ ํ•˜์œ„ ๋А๋‚Œ-๊นŠ์€ ๋‚ด์šฉ, numpy์™€ ๋น„์Šท 
  • ์ผ€๋ผ์Šค(Keras): Google์ด ์ธ์ˆ˜ ํ›„ ์‚ฌ์šฉ ๊ฑฐ์˜ ์•ˆ ํ•˜๋Š” ์ถ”์„ธ์ž„

 

2. ๋”ฅ๋Ÿฌ๋‹(Deep Learning) ํ•™์Šต

  • ์ง€๋„ํ•™์Šต: input, label
  • ๋น„์ง€๋„ ํ•™์Šต:input
    • input: X, fature, input๋ฐ์ดํ„ฐ
    • output: Y. label, output๋ฐ์ดํ„ฐ

(๋ณธ ๊ฐ•์˜์—์„œ๋Š” ์ง€๋„ํ•™์Šต๋งŒ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ž„)

 

 

2.1 ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต(์‹คํ–‰) ์ˆœ์„œ

1. import: ํ•„์š”ํ•œ ๋ชจ๋“ˆ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ import

2.์ „์ฒ˜๋ฆฌ: ํ•™์Šต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค

3. ๋ชจ๋ธ๋ง(modeling): ๋ชจ๋ธ์„ ์ •์˜ํ•œ๋‹ค.

4. ์ปดํŒŒ์ผ(complie): ๋ชจ๋ธ์„ ์ƒ์„ฑํ•œ๋‹ค.

5. ํ•™์Šต(fit): ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚จ๋‹ค -optimizer, loss, ..

6.์˜ˆ์ธก(predict): (๊ตฌ๊ธ€์ด ์ฑ„์ ํ•ด์„œ ์ด ๊ณผ์ •์€ ํ•„์š” ์—†๊ธด ํ•˜๋‹ค)

 

 

2.2 ์„ ํ˜• ํ•จ์ˆ˜์™€ ์˜ค์ฐจ

y= w * x + b

  • ๋‚˜์˜ ์˜ˆ์ธก(๋ชจ๋ธ): y= w * x + b
  • loss: Y์˜ˆ์ธก๊ฐ’ - Y์‹ค์ œ๊ฐ’

๊ฐ input์˜ ์˜ค์ฐจ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ, ์ „์ฒด ์˜ค์ฐจ๋Š” ์ด ์˜ค์ฐจ๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•ด ๊ณ„์‚ฐํ•œ๋‹ค.

  • loss: -2, 2, 4, 5, -4, -5
  • loss์˜ ํ•ฉ: 0

 

๊ทธ๋Ÿฐ๋ฐ ์˜ค์ฐจ๋ฅผ ๊ทธ๋ƒฅ ๋‹ค ํ•ฉํ•ด๋ฒ„๋ฆฌ๋ฉด  0์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 0์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ์˜ค์ฐจ๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋‹ˆ๊นŒ 0์ด ๋‚˜์˜ค๋ฉด ์•ˆ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ loss์˜ ํ•ฉ์„ ๊ตฌํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

  1. MAE(ํ‰๊ท  ์ ˆ๋Œ€๊ฐ’ ์˜ค์ฐจ)
  2. MSE(ํ‰๊ท  ์ œ๊ณฑ ์˜ค์ฐจ)

๋ฅผ ํ†ตํ•ด์„œ ์˜ค์ฐจ์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.

 

3. Basic ๋ชจ๋ธ: Dense Layer(Fully Connected Layer)

 

Dense Layer(Fully Connected Layer)

์™„์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ Dense layer๋Š” (input, hidden, output) 3๊ฐœ์˜ layer๋กœ ๊ตฌ์„ฑ๋จ

 

  • ๋…ผ๋ฌธ์—์„œ๋Š” Fully Connected Layer๋ผ๊ณ  ๋งŽ์ด ๋ถ€๋ฅด์ง€๋งŒ, Tensorflow์—์„œ๋Š” Dense layer๋ผ๊ณ  ๋ถ€๋ฆ„
  • hidden layer์˜ ๊ฒฝ์šฐ black box์™€๋„ ๊ฐ™์Œ
  • newron(node)์™€ wight, bias๋กœ ๊ตฌ์„ฑ๋จ

 

3.1 Dense Layer ๊ตฌ์„ฑ

model = Sequential([
	Dense(3, input_shape=[1]),
        Dense(4),
        Dense(4),
        Dense(1),
)]
  • Dense layer(์ฒซ ๋ฒˆ์งธ ์ธต:input layer)๋ถ€ํ„ฐ ์ญ‰ ๋‚ด๋ ค์˜ค๋Š” ํ˜•ํƒœ์ด๋‹ค
  • input layer์—์„œ๋Š” input _shape๋ฅผ ์ง€์ •ํ•ด ์ค˜์•ผํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด output๋ฅผ ๋„์ถœํ•œ๋‹ค
  • Sequential()์€ ๋ธ”๋ก์„ ์Œ“๋“ฏ์ด layer์„ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์•„์ฃผ๋Š” ๊ฒƒ์ด๋‹ค
    • ๋งˆ์ง€๋ง‰ " , "์˜ ๊ฒฝ์šฐ ์•ˆ ํ•ด๋„ ์ƒ๊ด€ ์—†๋‹ค

 

4. Dense Layer ์‹ค์Šต

import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=float)
# ๋ฐ์ดํ„ฐ์˜ ๋ณต์žก๋„๊ฐ€ ๋‹จ์ˆœํ•  ๋•Œ, Dense์˜ unit์€ 1๋กœ ์ง€์ •
model = Sequential([
    Dense(1, input_shape=[1]),
])

 

4.1 input_shape

listํ˜•ํƒœ๋‚˜ tupleํ˜•ํƒœ๋งŒ๊ฐ€๋Šฅํ•˜๋‹ค.

  • input_shape  = [1]
  • input_shape  = (1, )
  • input_shape = (1)

ํ•˜๋‚˜์”ฉ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— 1์ด๋‹ค.

  • xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
  • ys = np.array([5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=float)
    • ๋งŒ์•ฝ์— 4๊ฐœ์”ฉ ๋“ค์–ด๊ฐ„๋‹ค๋ฉด input_shape = [4] ๊ฐ€ ๋œ๋‹ค.

 

4.2 ์ปดํŒŒ์ผ(compile)

: ์ ์ ˆํ•œ optimizer์™€ loss ์„ ์ •ํ•˜๊ธฐ

  • regression(ํšŒ๊ท€) ์˜ˆ์ธก์„ ์œ„ํ•ด์„œ๋Š” loss=mse๋ฅผ ์„ ํƒ
  • optimizer๋Š” 'sgd'(Stochastic Gradient Descent)
model.compile(optimizer='sgd', loss='mse')

 

 

4.3 ํ•™์Šต (fit)

feature, label, epochs ์ง€์ •

  • verbose= 0, epochs ํ‘œ์‹œ ์•ˆ ํ•จ
  • verbose=1, epochs ํ‘œ์‹œ
model.fit(xs, ys, epochs=1200, verbose=0)

 

 

4.4 ์˜ˆ์ธก (Predict)

Predict๋กœ ์ž˜ ํ•™์Šต์ด ๋˜์–ด์žˆ๋Š”์ง€ ๊ฒ€์ฆ

  • ์‹ค์ œ ์‹œํ—˜์—์„œ๋Š” ํ•™์Šต๊นŒ์ง€๋งŒ ํ•˜๊ณ  ์ œ์ถœ ์˜ˆ์ธก์€ ๊ฒ€์ฆํ•˜๋Š”๋ฐ ๋„์›€์ด ๋งŽ์ด ๋˜๋Š” ๊ฒƒ์ผ ๋ฟ
# output
# 16.000046
model.predict([10.0])

 

728x90