OneclickAI commited on
Commit
5186ba7
ยท
verified ยท
1 Parent(s): fc94f55
Files changed (1) hide show
  1. README.md +14 -7
README.md CHANGED
@@ -200,7 +200,7 @@ x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=256)
200
  print(f"ํŒจ๋”ฉ ํ›„ ์ฒซ ๋ฒˆ์งธ ๋ฆฌ๋ทฐ ๊ธธ์ด: {len(x_train[0])}")
201
  ```
202
 
203
- **2๋‹จ๊ณ„ : ๋ชจ๋ธ ์ปดํŒŒ์ผ**
204
  ๋ชจ๋ธ์„ ์–ด๋–ป๊ฒŒ ํ•™์Šต์‹œํ‚ฌ์ง€ ํ•™์Šต ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
205
  ```python
206
  model.compile(
@@ -217,7 +217,7 @@ model.compile(
217
  )
218
  ```
219
 
220
- **3๋‹จ๊ณ„ : ๋ชจ๋ธ ํ•™์Šต ๋ฐ ํ‰๊ฐ€ (๋ฐฐ์น˜, ์—ํฌํฌ, ๊ทธ๋ฆฌ๊ณ  ๊ณผ์ ํ•ฉ)**
221
  model.fit() ํ•จ์ˆ˜๋กœ ์‹ค์ œ ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
222
  batch_size: ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์˜ ์ˆ˜. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ํ•™์Šต ์†๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
223
  epochs: ์ „์ฒด ๋ฐ์ดํ„ฐ์…‹์„ ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•™์Šตํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
@@ -241,10 +241,10 @@ print(f"\nTest loss: {score[0]:.4f}")
241
  print(f"Test accuracy: {score[1]:.4f}")
242
  ```
243
 
244
- ํ•™์Šต ๊ณผ์ •์„ ์ง€์ผœ๋ณผ ๋•Œ, ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•๋„(accuracy)๋Š” ๊ณ„์† ์˜ค๋ฅด๋Š”๋ฐ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•๋„(val_accuracy)๊ฐ€ ์–ด๋А ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ •์ฒด๋˜๊ฑฐ๋‚˜ ๋–จ์–ด์ง„๋‹ค๋ฉด, ๋ชจ๋ธ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์—๋งŒ ๊ณผํ•˜๊ฒŒ ์ ์‘ํ•˜๋Š” **๊ณผ์ ํ•ฉ(Overfitting)**์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
245
  ์ด๋Ÿด ๋•Œ๋Š”, ๋“œ๋กญ์•„์›ƒ์˜ ๋น„์œจ์„ ๋†’์ด๊ฑฐ๋‚˜ ํ•™์Šต์œจ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
246
 
247
- **4๋‹จ๊ณ„ : ํ•™์Šต๋œ ๋ชจ๋ธ ์ €์žฅ ๋ฐ ์žฌ์‚ฌ์šฉ**
248
  ํ•™์Šต์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ชจ๋ธ์€ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
249
 
250
  ```python
@@ -255,7 +255,7 @@ model.save("my_rnn_model_imdb.keras")
255
  loaded_model = keras.models.load_model("my_rnn_model_imdb.keras")
256
  ```
257
 
258
- **5๋‹จ๊ณ„ : ๋‚˜๋งŒ์˜ ๋ฌธ์žฅ์œผ๋กœ ๋ชจ๋ธ ํ…Œ์ŠคํŠธํ•˜๊ธฐ (์‹ค์ „ ์˜ˆ์ธก)**
259
  ์‹ค์ œ ๋ฌธ์žฅ์„ ์˜ˆ์ธกํ•˜๋ ค๋ฉด, ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
260
 
261
  ```python
@@ -277,7 +277,7 @@ print(f"๋ฆฌ๋ทฐ: '{review}'")
277
  print(f"๊ธ์ • ํ™•๋ฅ : {prediction[0][0] * 100:.2f}%")
278
  ```
279
 
280
- 4. ๋‚˜๋งŒ์˜ RNN ๋ชจ๋ธ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ
281
  ๊ธฐ๋ณธ RNN๋„ ์ข‹์ง€๋งŒ, ๋” ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
282
 
283
  **RNN์˜ ์น˜๋ช…์  ์•ฝ์  : ์žฅ๊ธฐ ์˜์กด์„ฑ ๋ฌธ์ œ (Vanishing Gradients)**
@@ -288,6 +288,13 @@ print(f"๊ธ์ • ํ™•๋ฅ : {prediction[0][0] * 100:.2f}%")
288
  ์ด๋กœ ์ธํ•ด ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํ•™์Šตํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
289
  ์ด๋ฅผ ์žฅ๊ธฐ ์˜์กด์„ฑ ๋ฌธ์ œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
290
 
 
 
 
 
 
 
 
291
  **๊ธฐ์–ต๋ ฅ ๊ฐ•ํ™” : LSTM๊ณผ GRU์˜ ๋“ฑ์žฅ**
292
  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **LSTM(Long Short-Term Memory)**๊ณผ **GRU(Gated Recurrent Unit)**๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
293
  ์ด๋“ค์€ RNN ๋‚ด๋ถ€์— **๊ฒŒ์ดํŠธ(Gate)**๋ผ๋Š” ์ •๊ตํ•œ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ •๋ณด์˜ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
@@ -327,6 +334,6 @@ model_bidirectional = keras.Sequential([
327
  ## 5. ๊ฒฐ๋ก 
328
  ์˜ค๋Š˜์€ ์ˆœ์ฐจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” RNN์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์‹ค์ œ ์ฝ”๋“œ๋กœ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๊ณ , LSTM, GRU, ์–‘๋ฐฉํ–ฅ RNN๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.
329
  RNN์€ ๊ทธ ์ž์ฒด๋กœ๋„ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ถ„์•ผ์˜ ๋ฐœ์ „์— ์—„์ฒญ๋‚œ ๊ธฐ์—ฌ๋ฅผ ํ•œ ๊ธฐ๋…๋น„์ ์ธ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
330
- ํŠนํžˆ RNN์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋Š” ์‹œ๋„ ์†์—์„œ ํƒ„์ƒํ•œ ์–ดํ…์…˜(Attention) ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ดํ›„ ํŠธ๋žœ์Šคํฌ๋จธ(Transformer)๋ผ๋Š” ํ˜์‹ ์ ์ธ ๋ชจ๋ธ์˜ ๊ธฐ๋ฐ˜์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
331
  ๋‹ค์Œ์—๋Š” ์–ดํ…์…˜ ๊ธฐ๋ฒ•๊ณผ ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ, ์ธ์ฝ”๋”, ๋””์ฝ”๋”๋กœ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค!!
332
  ์˜ค๋Š˜๋„ ์ข‹์€ํ•˜๋ฃจ ๋ณด๋‚ด์„ธ์š”!!
 
200
  print(f"ํŒจ๋”ฉ ํ›„ ์ฒซ ๋ฒˆ์งธ ๋ฆฌ๋ทฐ ๊ธธ์ด: {len(x_train[0])}")
201
  ```
202
 
203
+ **2๋‹จ๊ณ„ : ๋ชจ๋ธ ์ปดํŒŒ์ผ**
204
  ๋ชจ๋ธ์„ ์–ด๋–ป๊ฒŒ ํ•™์Šต์‹œํ‚ฌ์ง€ ํ•™์Šต ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
205
  ```python
206
  model.compile(
 
217
  )
218
  ```
219
 
220
+ **3๋‹จ๊ณ„ : ๋ชจ๋ธ ํ•™์Šต ๋ฐ ํ‰๊ฐ€ (๋ฐฐ์น˜, ์—ํฌํฌ, ๊ทธ๋ฆฌ๊ณ  ๊ณผ์ ํ•ฉ)**
221
  model.fit() ํ•จ์ˆ˜๋กœ ์‹ค์ œ ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
222
  batch_size: ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์˜ ์ˆ˜. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ํ•™์Šต ์†๋„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.
223
  epochs: ์ „์ฒด ๋ฐ์ดํ„ฐ์…‹์„ ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•™์Šตํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
 
241
  print(f"Test accuracy: {score[1]:.4f}")
242
  ```
243
 
244
+ ํ•™์Šต ๊ณผ์ •์„ ์ง€์ผœ๋ณผ ๋•Œ, ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•๋„(accuracy)๋Š” ๊ณ„์† ์˜ค๋ฅด๋Š”๋ฐ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•๋„(val_accuracy)๊ฐ€ ์–ด๋А ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ •์ฒด๋˜๊ฑฐ๋‚˜ ๋–จ์–ด์ง„๋‹ค๋ฉด, ๋ชจ๋ธ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์—๋งŒ ๊ณผํ•˜๊ฒŒ ์ ์‘ํ•˜๋Š” ๊ณผ์ ํ•ฉ(Overfitting)์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
245
  ์ด๋Ÿด ๋•Œ๋Š”, ๋“œ๋กญ์•„์›ƒ์˜ ๋น„์œจ์„ ๋†’์ด๊ฑฐ๋‚˜ ํ•™์Šต์œจ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
246
 
247
+ **4๋‹จ๊ณ„ : ํ•™์Šต๋œ ๋ชจ๋ธ ์ €์žฅ ๋ฐ ์žฌ์‚ฌ์šฉ**
248
  ํ•™์Šต์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ชจ๋ธ์€ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
249
 
250
  ```python
 
255
  loaded_model = keras.models.load_model("my_rnn_model_imdb.keras")
256
  ```
257
 
258
+ **5๋‹จ๊ณ„ : ๋‚˜๋งŒ์˜ ๋ฌธ์žฅ์œผ๋กœ ๋ชจ๋ธ ํ…Œ์ŠคํŠธํ•˜๊ธฐ (์‹ค์ „ ์˜ˆ์ธก)**
259
  ์‹ค์ œ ๋ฌธ์žฅ์„ ์˜ˆ์ธกํ•˜๋ ค๋ฉด, ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
260
 
261
  ```python
 
277
  print(f"๊ธ์ • ํ™•๋ฅ : {prediction[0][0] * 100:.2f}%")
278
  ```
279
 
280
+ 4. ๋‚˜๋งŒ์˜ RNN ๋ชจ๋ธ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ
281
  ๊ธฐ๋ณธ RNN๋„ ์ข‹์ง€๋งŒ, ๋” ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
282
 
283
  **RNN์˜ ์น˜๋ช…์  ์•ฝ์  : ์žฅ๊ธฐ ์˜์กด์„ฑ ๋ฌธ์ œ (Vanishing Gradients)**
 
288
  ์ด๋กœ ์ธํ•ด ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํ•™์Šตํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
289
  ์ด๋ฅผ ์žฅ๊ธฐ ์˜์กด์„ฑ ๋ฌธ์ œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
290
 
291
+ ์‹ค์ œ๋กœ, ์ง€๊ธˆ ํ—ˆ๊น…ํŽ˜์ด์Šค์— ์˜ฌ๋ผ๊ฐ€์™€ ์žˆ๋Š” RNN ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๋ณด๋ฉด,
292
+ ํŽธํ–ฅ๋˜์–ด ํ•œ๊ฐ€์ง€ ๋ผ๋ฒจ๋งŒ ๊ณ„์† ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
293
+ ์ด ๋ชจ์Šต์ด RNN์˜ ํ•œ๊ณ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ์š”,
294
+ ๋ฐ”๋กœ ์•ž์„œ ์„ค๋ช…ํ•œ ์žฅ๊ธฐ์˜์กด์„ฑ, ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ ์ž…๋‹ˆ๋‹ค.
295
+ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๊ตฌ์กฐ๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
296
+
297
+
298
  **๊ธฐ์–ต๋ ฅ ๊ฐ•ํ™” : LSTM๊ณผ GRU์˜ ๋“ฑ์žฅ**
299
  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **LSTM(Long Short-Term Memory)**๊ณผ **GRU(Gated Recurrent Unit)**๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
300
  ์ด๋“ค์€ RNN ๋‚ด๋ถ€์— **๊ฒŒ์ดํŠธ(Gate)**๋ผ๋Š” ์ •๊ตํ•œ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ •๋ณด์˜ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
 
334
  ## 5. ๊ฒฐ๋ก 
335
  ์˜ค๋Š˜์€ ์ˆœ์ฐจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” RNN์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, ์‹ค์ œ ์ฝ”๋“œ๋กœ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๊ณ , LSTM, GRU, ์–‘๋ฐฉํ–ฅ RNN๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.
336
  RNN์€ ๊ทธ ์ž์ฒด๋กœ๋„ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ถ„์•ผ์˜ ๋ฐœ์ „์— ์—„์ฒญ๋‚œ ๊ธฐ์—ฌ๋ฅผ ํ•œ ๊ธฐ๋…๋น„์ ์ธ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
337
+ ํŠนํžˆ RNN์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋Š” ์‹œ๋„ ์†์—์„œ ํƒ„์ƒํ•œ ์–ดํ…์…˜(Attention) ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ดํ›„ **ํŠธ๋žœ์Šคํฌ๋จธ(Transformer)**๋ผ๋Š” ํ˜์‹ ์ ์ธ ๋ชจ๋ธ์˜ ๊ธฐ๋ฐ˜์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
338
  ๋‹ค์Œ์—๋Š” ์–ดํ…์…˜ ๊ธฐ๋ฒ•๊ณผ ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ, ์ธ์ฝ”๋”, ๋””์ฝ”๋”๋กœ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค!!
339
  ์˜ค๋Š˜๋„ ์ข‹์€ํ•˜๋ฃจ ๋ณด๋‚ด์„ธ์š”!!