๊ด€๋ฆฌ ๋ฉ”๋‰ด

yeon's ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป

RNN์ด๋ž€? ๋ณธ๋ฌธ

Computer ๐Ÿ’ป/Deep Learning

RNN์ด๋ž€?

yeon42 2021. 10. 28. 20:31
728x90

https://velog.io/@sksmslhy/RNN

 

Recurrent Neural Network, RNN(์ˆœํ™˜์‹ ๊ฒฝ๋ง)์ด๋ž€?

RNN์€ Recurrent ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๋ฐ˜๋ณต๋˜๋Š” ์‹ ๊ฒฝ๋ง์ด๋‹ค. ์ฆ‰, ์Šค์Šค๋กœ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์–ป์€ ์ •๋ณด๊ฐ€ ์ง€์†๋˜๋„๋ก ํ•œ๋‹ค.

velog.io

์œ„ ๋ธ”๋กœ๊ทธ๋ฅผ ํ•„์‚ฌํ•˜๋ฉฐ ๊ณต๋ถ€

 

* ๋ชจ๋“  ํ…์ŠคํŠธ์™€ ์ด๋ฏธ์ง€์˜ ์ถœ์ฒ˜๋Š” ์œ„ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

 


์ถœ์ฒ˜: ์œ„ ๋ธ”๋กœ๊ทธ

 

RNN (Recurrent Neural Network, ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง)

RNN์ด๋ž€?

- RNN์€ Recurrent ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๋ฐ˜๋ณต๋˜๋Š” ์‹ ๊ฒฝ๋ง์ด๋‹ค.

- ์ฆ‰, ์Šค์Šค๋กœ๊ฐ€ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์–ป์€ ์ •๋ณด๊ฐ€ ์ง€์†๋˜๋„๋ก ํ•œ๋‹ค.

- RNN์€ ๊ธฐ์กด Neural Network์™€ ๊ตฌ์กฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋น„์Šทํ•˜๋‹ค.

 

- CNN๊ณผ ๊ฐ™์€ ์‹ ๊ฒฝ๋ง๋“ค์€ ์ „๋ถ€ hidden layer์—์„œ activation function์„ ์ง€๋‚œ ๊ฐ’์€ ์˜ค์ง ์ถœ๋ ฅ์ธต์œผ๋กœ๋งŒ ํ–ฅํ–ˆ๋‹ค.

  (์ด๋Ÿฐ ์‹ ๊ฒฝ๋ง์„ Feed Forward Neural Network๋ผ๊ณ  ํ•จ)

- ๊ทธ๋Ÿฌ๋‚˜ RNN์€ hidden node์—์„œ activation function์„ ํ†ตํ•ด ๋‚˜์˜จ ์ถœ๋ ฅ์„ ์ถœ๋ ฅ์ธต์œผ๋กœ๋„ ๋‚ด๋ณด๋‚ด๊ณ ,

  hidden node์˜ ๋‹ค์Œ ์—ฐ์‚ฐ์˜ ์ž…๋ ฅ์œผ๋กœ๋„ ๋‚ด๋ณด๋‚ด๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

 

# RNN์˜ ๊ตฌ์กฐ

์ถœ์ฒ˜: ์œ„ ๋ธ”๋กœ๊ทธ

- A๋Š” ์ž…๋ ฅ์œผ๋กœ Xt๋ฅผ ๋ฐ›์•„ ht๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

- A๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๋ฐ˜๋ณต์€ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ์˜ network๊ฐ€ ์ด์ „ ๋‹จ๊ณ„์˜ ์ •๋ณด๋ฅผ ๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

- ์™ผ์ชฝ์˜ ๋ฐ˜๋ณต์„ ํ’€์–ด์„œ ๋ณด๋ฉด ์˜ค๋ฅธ์ชฝ์ด ๋œ๋‹ค.

- ์ด์ „ ๋‹จ๊ณ„์—์„œ์˜ ์ •๋ณด๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

- CNN์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, bias๋„ ์ž…๋ ฅ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

- RNN์—์„œ hidden layer์—์„œ activation function์„ ํ†ตํ•ด ์ถœ๋ ฅ์„ ๋‚ด๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋Š” node๋ฅผ cell์ด๋ผ๊ณ  ํ•œ๋‹ค

- (์œ„ ๊ทธ๋ฆผ์—์„œ A) ์ด cell์€ ์ด์ „์˜ ๊ฐ’์„ ๊ธฐ์–ตํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ memory cell ๋˜๋Š” RNN cell์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

- Memory cell์ด ์ถœ๋ ฅ์ธต ๋ฐฉํ–ฅ์œผ๋กœ ๋˜๋Š” ๋‹ค์Œ ์‹œ์ ์ธ t+1์˜ ์ž์‹ ์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ฐ’์„ hidden state๋ผ๊ณ  ํ•œ๋‹ค.

- ์ฆ‰, t ์‹œ์ ์˜ memory cell์€ t-1 ์‹œ์ ์˜ memory cell์ด ๋ณด๋‚ธ hidden state ๊ฐ’์„ t ์‹œ์ ์˜ hidden state ๊ณ„์‚ฐ์„ ์œ„ํ•œ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

- RNN์—์„œ Xt์™€ ht๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒกํ„ฐ ๋‹จ์œ„์ด๋‹ค.

- ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋กœ ์ธํ•ด RNN์€ ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ๋ฆฌํ•˜๋‹ค.

 

- RNN์€ ์ž…๋ ค๊ณ ๊ฐ€ ์ถœ๋ ฅ์˜ ๊ธธ์ด(Xt, ht์˜ ๊ฐœ์ˆ˜)๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค๊ณ„ ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ์ผ๋Œ€์ผ, ๋‹ค๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค ๋“ฑ ์กด์žฌ ๊ฐ€๋Šฅ

 

- 'pytorch'๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ชจ๋ธ์„ ์ƒ๊ฐํ•ด๋ณด์ž

- p๋ผ๋Š” ์ž…๋ ฅ์ด ๋“ค์–ด์™”์„ ๋•Œ ๋‹ค์Œ์— ๋‚˜์˜ฌ ์•ŒํŒŒ๋ฒณ์œผ๋กœ y๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ฒŒ ๋œ๋‹ค.

- ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, ์•ž์— ๋“ค์–ด์™”๋˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด ์ œ๋Œ€๋กœ ์˜ˆ์ธก x

- ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ์ง€์ •ํ•œ ์‹œ๊ฐ„๋งŒํผ ๋ฐ˜๋ณต๋จ

 

- ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ๊ฐ’์ด ๊ณ„์‚ฐ๋˜๋ฉด, ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฐ๊ด๊ฐ’๊ณผ ๋ชฉํ‘ฏ๊ฐ’์˜ ์ฐจ์ด๋ฅผ loss function์„ ํ†ตํ•ด ๊ณ„์‚ฐํ•˜๊ณ  ์—ญ์ „ํŒŒ(back propagation)ํ•ด์•ผ ํ•œ๋‹ค.

- ๊ธฐ์กด์˜ ์—ญ์ „ํŒŒ์™€๋Š” ๋‹ฌ๋ฆฌ RNN์€ ๊ณ„์‚ฐ์— ์‚ฌ์šฉ๋œ ์‹œ์ ์˜ ์ˆ˜์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

ex) t=0 ~ t=2 ๊ฐ€ ๊ณ„์‚ฐ์— ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋ฉด, ๊ทธ ์‹œ๊ฐ„ ์ „์ฒด์— ๋Œ€ํ•ด ์—ญ์ „ํŒŒ๋ฅผ ํ•ด์•ผ ํ•จ

: BPTT (Backpropogation Trough Time), ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์—ญ์ „ํŒŒ

 

์ถœ์ฒ˜: ์œ„ ๋ธ”๋กœ๊ทธ

 

- ์œ„ ๊ทธ๋ฆผ์—์„œ t=0, 1, 2์ธ ์‹œ์ ์—์„œ ๊ฐ๊ฐ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๊ณ  ๋ชฉํ‘œ๊ฐ’๊ณผ ๋น„๊ต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

- ๋‹ค์‹œ ๋‹จ์–ด 'pytorch'๋กœ ์˜ˆ๋ฅผ ๋“ค๋ฉด, t=0์—์„œ p๊ฐ€ input์œผ๋กœ ๋“ค์–ด๊ฐ€๊ณ , t=0์—์„œ output์œผ๋กœ y๊ฐ€ ์ถœ๋ ฅ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•œ๋‹ค.

- ๋”ฐ๋ผ์„œ target_0์—๋Š” y๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ๊ฒฐ๊ณผ๊ฐ€ y์™€ ๊ฐ™ใ…‡์ง€ ์•Š๋‹ค๋ฉด loss๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.

- t=1์—์„œ y๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด target_1์€ t์ด๊ณ , t=2์—์„œ๋Š” input์ด t, target_2๋Š” 0์ด ๋œ๋‹ค.

 

- ์ด ๋•Œ, ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋ ค๋ฉด t=2 ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•œ loss๋ฅผ back propagation ํ•˜๊ธฐ ์œ„ํ•ด

  loss๋ฅผ input๊ณผ hidden layer ์‚ฌ์ด์˜ ๊ฐ€์ค‘์น˜๋กœ ๋ฏธ๋ถ„ํ•˜์—ฌ loss์— ๋Œ€ํ•œ ๊ฐ ๋น„์ค‘์„ ๊ตฌํ•ด ์—…๋ฐ์ดํŠธ ํ•˜๋ฉด ๋œ๋‹ค.

- ์ด ๊ณผ์ •์—์„œ ์ด์ „ ์‹œ์ ์˜ ๊ฐ’๋“ค์ด ์—ฐ์‚ฐ์— ํฌํ•จํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด์ „ ์‹œ์ ์˜ ๊ฐ’๋“ค์€ ๋‹ค์‹œ ๊ฐ€์ค‘์น˜, input, ๊ทธ ์ „ ์‹œ์ ์˜ ๊ฐ’์˜ ์กฐํ•ฉ์ด๋‹ค.

- RNN์€ ๊ฐ ์œ„์น˜๋ณ„๋กœ ๊ฐ™์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ

  t=2 ์‹œ์ ์˜ loss๋ฅผ back propagationํ•˜๋ ค๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ t=0 ์‹œ์ ์˜ ๋…ธ๋“œ ๊ฐ’๋“ค์—๋„ ๋ชจ๋‘ ์˜ํ–ฅ์„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

- ์ฆ‰, ์‹œ๊ฐ„์„ ์—ญ์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ ๊ฐ€์ค‘์น˜๋“ค์„ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

- ๊ฐ€์ค‘์น˜๋ฅผ ํ‘œ์‹œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ถœ์ฒ˜: ์œ„ ๋ธ”๋กœ๊ทธ

 

- ์ด ๊ทธ๋ฆผ์—์„œ t=2์ธ ์‹œ์ ๋งŒ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- ๊ธฐ๋ณธ์ ์œผ๋กœ RNN์—์„œ๋Š” activation function์œผ๋กœ tanh ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

์ถœ์ฒ˜: ์œ„ ๋ธ”๋กœ๊ทธ

 

 

 

 

 

 

 

 

 

 

 

'Computer ๐Ÿ’ป > Deep Learning' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

RNN in TensorFlow(ํ…์„œํ”Œ๋กœ์šฐ)  (0) 2021.10.28
RNN์ด๋ž€? (2)  (0) 2021.10.28
Model Subclassing API (CNN)  (0) 2021.10.27
Functional API (CNN)  (0) 2021.10.27
Sequential API (CNN)  (0) 2021.10.27
Comments