240612 Today I Learn
๋ฅ๋ฌ๋ ์ด๋ก
๋จธ์ ๋ฌ๋ vs. ๋ฅ๋ฌ๋
๐ก ๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ๋ชจ๋ ๋ฐ์ดํฐ๋ก๋ถํฐ ๊ฐ์ค์น๋ฅผ ํ์ตํ์ฌ ํจํด์ ์ธ์ํ๊ณ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ธ๊ณต์ง๋ฅ(AI)์ ํ์ ๋ถ์ผ์ด๋ค.
- ๋จธ์ ๋ฌ๋: ๋ฐ์ดํฐ ์์ ํต๊ณ์ ๊ด๊ณ๋ฅผ ์ฐพ์๋ด๋ฉฐ ์์ธก์ด๋ ๋ถ๋ฅ๋ฅ๋ฅผ ํ๋ ๋ฐฉ๋ฒ
- ๋ฅ๋ฌ๋: ๋จธ์ ๋ฌ๋์ ํ ๋ถ์ผ๋ก ์ ๊ฒฝ์ธํฌ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ ์ธ๊ณต ์ ๊ฒฝ๋ง*์ ์ฌ์ฉํจ.
* ์ธ๊ณต์ ๊ฒฝ๋ง : ์ธ๊ฐ์ ์ ๊ฒฝ์ธํฌ๋ฅผ ๋ชจ๋ฐฉํ์ฌ ๋ง๋ ๋ง(Networks). ์ธ๊ณต์ ๊ฒฝ๋ง์ ๊ฐ์ฅ ์์ ๋จ์๋ฅผ ํผ์ ํธ๋ก ์ด๋ผ๊ณ ํ๋ค.
Gradient Descent
๐ก ๊ฒฝ์ฌ ํ๊ฐ๋ฒ(Gradient Descent)
์ธ๊ณต์ ๊ฒฝ๋ง ์ค์ฐจํจ์์ ์ต์๊ฐ*์ ์ฐพ์๊ฐ๋ ์ต์ ํ ๊ธฐ๋ฒ
ํ๊ท ๋ฌธ์ ์ ๊ฒฝ์ฐ ๊ฐ์ค์น(weight)๋ฅผ ์ด๋ฆฌ ์ ๋ฆฌ ์์ง์ด๋ฉด์ ์ต์์ MSE๋ฅผ ๋์ถํ๋ ๊ฒ.
- ํจ์์ ๊ฐ ์ง์ ์์ ํจ์์ ๊ฐ์ ๋ฎ์ถ๋ ๋ฐฉ์์ ์ ์ํ๋ ์งํ → ๊ธฐ์ธ๊ธฐ
- ํ ์์น์์ ๊ธฐ์ธ์ด์ง ๋ฐฉํฅ์ผ๋ก ์ผ์ ๊ฑฐ๋ฆฌ๋งํผ ์ด๋, ์ด๋ํ ์์น์์๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ณ์ฐํด ๊ธฐ์ธ์ด์ง ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ํจ์์ ์ต์๊ฐ์ ์ฐพ์๊ฐ.
ํ์ฑํ ํจ์
๐ก ํ์ฑํ ํจ์
์ธ๊ณต ์ ๊ฒฝ๋ง์์ ์ ๋ ฅ์ ๋ณํํ๋ ํจ์. ์ ๋ ฅ์ ํธ์ ์ ํํฉ์ ์ ๋ ฅ๋ฐ์ ์ต์ข ์ ์ผ๋ก ์ ํธ์ ๊ฐ๋๋ฅผ ๊ณ์ฐํ๋ค.
ํํฐ ์ปค๋์ ์ด์ฉํด ์ปจ๋ณผ๋ฃจ์ ๊ณ์ฐ์ด ์๋ฃ๋๋ฉด ๊ฐ ํฝ์ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ ํจ์์ ์ ์ฉํด ํ๋ณ๋ ฅ ์๊ฒ ๋ง๋ ๋ค.
Hidden Layer
๐ก ํ๋ ๋ ์ด์ด
๋ฐ์ดํฐ๋ฅผ ๋น์ ํ์ ์ผ๋ก ๋ณํํจ๊ณผ ๋์์ ๋ฐ์ดํฐ์ ๊ณ ์ฐจ์์ ํน์ฑ(ex ์ด๋ฏธ์ง, ์์ฐ์ด)์ ํ์ตํ๊ธฐ ์ํด ์ค๊ฐ์ ์ ๋ ฅ๊ณผ ๊ฒฐ๊ณผ ์ธ์ ์ถ๊ฐํ๊ฒ ๋๋ ์จ์ ์ธต
- ํ๋ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ ์๋ก ๋ ์ข์ ๋ชจ๋ธ์ด ๋์ฌ ์ค ์์์ผ๋, ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์ ๋๋ฌธ์ ์ค์ ๋ก๋ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ *๊ฐ ๋ฐ์
โ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์
๊ฒฝ์ฌ ๊ฐ์๋ฒ์ ์ด์ฉํด ์๋ฌ๋ฅผ ์ญ์ ํ ํ๋ ๊ณผ์ ์์ ๊ฒฝ์ฌ๋๊ฐ ๊ธ๊ฐํ๋ ๋ฌธ์ . ์ถ๋ ฅ์ธต์ผ๋ก๋ถํฐ ํ๋์ฉ ์์ผ๋ก ๋๋์๊ฐ๋ฉฐ ๊ฐ ์ธต์ ๊ฐ์ค์น๋ฅผ ์์ (์ค์ฐจ ์ญ์ ํ)ํ ๋ ๋ฏธ๋ถ๊ฐ(์ฆ, ๊ธฐ์ธ๊ธฐ)์ด ํ์ํ๋ค. ๊ทธ๋ฐ๋ฐ, ์ธต์ด ๋์ด๋๋ฉด์ ๊ธฐ์ธ๊ธฐ๊ฐ ์ค๊ฐ์ 0์ด ๋์ด๋ฒ๋ฆฌ๋ ๊ธฐ์ธ๊ธฐ ์์ค๋ฌธ์ ๊ฐ ๋ฐ์๋ ์ ์๋ค. ์ด๋ ํ์ฑํ ํจ์๋ก ์ฌ์ฉ๋ ์๊ทธ๋ชจ์ด๋ ํจ์์ ํน์ฑ ๋๋ฌธ์ธ๋ฐ, 1๋ณด๋ค ์์ ์๋ฅผ ๊ณ์ ๊ณฑํ๋ฉด 0์ ๊ฐ๊น์์ง๊ธฐ ๋๋ฌธ์ ์ธต์ ๊ฑฐ์ณ ๊ฐ์๋ก ๊ธฐ์ธ๊ธฐ๊ฐ ์ฌ๋ผ์ ธ ๊ฐ์ค์น๋ฅผ ์์ ํ๊ธฐ ์ด๋ ค์ ์ง๋ค.
→ ํน์ ํ์ฑํ ํจ์(ex Relu)๋ฅผ ํตํด ์ํ ํ๊ฒ ๋๋ค.
๐ก Epoch
์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์ ๊ฒฝ๋ง์ ํต๊ณผํ๋ ํ ๋ฒ์ ์ฌ์ดํด
- batch: ์ ์ฒด ํ๋ จ ๋ฐ์ดํฐ ์ ์ ์ผ์ ํ ํฌ๊ธฐ์ ์ ๊ทธ๋ฃน์ผ๋ก ๋๋ ๊ฒ
- iteration: ์ ์ฒด ํ๋ จ ๋ฐ์ดํฐ ์ ์ ์ฌ๋ฌ ๊ฐ(=batch)๋ก ๋๋์์ ๋ ๋ฐฐ์น๊ฐ ํ์ต๋๋ ํ์
๋ฅ๋ฌ๋ ์ค์ต - Tensorflow
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
from sklearn.preprocessing import StandardScaler
weights = np.array([87,81,82,92,90,61,86,66,69,69])
heights = np.array([187,174,179,192,188,160,179,168,168,174])
๋จ์ผ ๋ ์ด์ด ํ๊ท ๋ฅ๋ฌ๋
# Sequential ๋ชจ๋ธ ์ด๊ธฐํ
model = Sequential()
#๋จ์ผ์ ์ถ๊ฐํ๊ธฐ
dense_layer = Dense(units= 1, input_shape=[1])
model.add(dense_layer)
model.compile(optimizer='adam', loss = 'mean_squared_error')
model.summary()
model.fit(weights, heights, epochs = 100)
๐ก input_shape ์ค์ ํ
input shape์ ๊ฒฐ๊ตญ ๋ชจ๋ธ์ ๋ฃ์ผ๋ ค๊ณ ํ๋ ๋ฐ์ดํฐ์ feature์ ๊ฐ์๋ฅผ ์ผ์ปซ๋๋ค. ๋๋ฌธ์ input_shape = data.shape[-1]๋ก ์ง์ ํด์ฃผ๋ฉด ๋ฐ์ดํฐ์ feature์์ ๋ง๊ฒ ์ง์ ์ด ๋๋ค.
ํ๋ ๋ ์ด์ด ์ถ๊ฐ ํ๊ท ๋ฅ๋ฌ๋
- ์ด 3๊ฐ์ dense ๋ ์ด์ด ์ฌ์ฉ → feature์ ๊ฐ์๊ฐ ์ด 3๊ฐ
- output ๋ ์ด์ด๊ฐ 1๋ก ํ๊ทํ๊ณ , loss ๊ฐ mean_squared_erro์ด๋ฏ๋ก ํ๊ท ๋ฅ๋ฌ๋์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
## Hidden Layer๋ฅผ ํฌํจํ ์ํคํ
์ฒ
model2 = Sequential()
model2.add(Dense(units=64, activation = 'relu', input_shape = [1]))
model2.add(Dense(units=64, activation = 'relu'))
model2.add(Dense(units= 1))
model2.compile(optimizer='adam', loss = 'mean_squared_error')
model2.summary()
model2.fit(weights, heights, epochs = 100, batch_size= 10 )
๋ฅ๋ฌ๋ ํ์ฉ ์ฌ๋ก
์์ฐ์ด์ฒ๋ฆฌ
๐ก ์์ฐ์ด ์ฒ๋ฆฌ
์ธ๊ฐ์ ์ธ์ด๋ฅผ ๋ฐ์ดํฐํ ํ๋ ๊ฒ
์ด๋ฏธ์ง
์ด๋ฏธ์ง๋ RGB 256๊ฐ์ ๋ฐ์ดํฐ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค.
๐ก Stable Diffusion(2022)
2022๋ ์ ๋ฐํ๋ text-to-image Mutimodal ์ด๋ฏธ์ง๋ชจ๋ธ
'๐ Today I Learn > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋จธ์ ๋ฌ๋ ํน๊ฐ #2 ํ๊ท(Regression) (0) | 2024.06.15 |
---|---|
[๊ฐ์ธ ๊ณผ์ ] ๋จธ์ ๋ฌ๋ ๊ฐ์ธ๊ณผ์ (1) | 2024.06.13 |
๋จธ์ ๋ฌ๋ ํน๊ฐ #1 ๋ถ๋ฅ(Clasification) (0) | 2024.06.12 |
๋จธ์ ๋ฌ๋์ ์ดํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ (6) ๋น์ง๋ํ์ต (0) | 2024.06.11 |
๋จธ์ ๋ฌ๋์ ์ดํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ (5) ํ๊ท, ๋ถ๋ฅ ๋ชจ๋ธ๋ง ์ฌํ (0) | 2024.06.11 |