๐Ÿ”—

IndRNN

๋…๋ฆฝ์  ์ˆœํ™˜์‹ ๊ฒฝ๋ง - ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ˜์‹ ์ ์ธ RNN

๋”ฅ๋Ÿฌ๋‹ ์ˆœํ™˜์‹ ๊ฒฝ๋ง ๊ทธ๋ž˜๋””์–ธํŠธ

๊ฐœ์š”

IndRNN์ด๋ž€?

IndRNN(Independent Recurrent Neural Network)์€ ๊ธฐ์กด RNN์˜ ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ํ˜์‹ ์ ์ธ ์ˆœํ™˜์‹ ๊ฒฝ๋ง์ž…๋‹ˆ๋‹ค. ๊ฐ ๋‰ด๋Ÿฐ์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์ ์ ˆํ•œ ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์žฅ๊ฑฐ๋ฆฌ ์˜์กด์„ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” LSTM์ด๋‚˜ GRU์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ฒŒ์ดํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—†์ด๋„ ์•ˆ์ •์ ์ธ ํ•™์Šต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ํ•ด๊ฒฐ
  • ๋…๋ฆฝ์  ๋‰ด๋Ÿฐ ๊ตฌ์กฐ
  • ๊ฐ„๋‹จํ•œ ์•„ํ‚คํ…์ฒ˜
  • ์žฅ๊ฑฐ๋ฆฌ ์˜์กด์„ฑ ํ•™์Šต
  • ํšจ์œจ์ ์ธ ํ•™์Šต

๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ

์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ

๋…๋ฆฝ์  ๋‰ด๋Ÿฐ

๊ฐ ๋‰ด๋Ÿฐ์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š์Œ

์ ์ ˆํ•œ ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”

๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค์„ ๋ฐฉ์ง€ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

๋‹จ์ˆœํ•œ ๊ตฌ์กฐ

๋ณต์žกํ•œ ๊ฒŒ์ดํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—†์ด ๊ธฐ๋ณธ์ ์ธ RNN ๊ตฌ์กฐ ์œ ์ง€

์ž‘๋™ ์›๋ฆฌ

1๋‹จ๊ณ„: ๋…๋ฆฝ์  ๋‰ด๋Ÿฐ์œผ๋กœ ์ž…๋ ฅ ์ฒ˜๋ฆฌ

2๋‹จ๊ณ„: ์ ์ ˆํ•œ ๊ฐ€์ค‘์น˜๋กœ ์ƒํƒœ ์—…๋ฐ์ดํŠธ

3๋‹จ๊ณ„: ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ์—†์ด ํ•™์Šต

4๋‹จ๊ณ„: ์žฅ๊ฑฐ๋ฆฌ ์˜์กด์„ฑ ํ•™์Šต

์‘์šฉ ๋ถ„์•ผ

์ž์—ฐ์–ด ์ฒ˜๋ฆฌ

๊ธด ํ…์ŠคํŠธ์˜ ์ดํ•ด์™€ ์ƒ์„ฑ, ์–ธ์–ด ๋ชจ๋ธ๋ง

์‹œ๊ณ„์—ด ์˜ˆ์ธก

์žฅ๊ธฐ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ํŒจํ„ด ํ•™์Šต๊ณผ ์˜ˆ์ธก

์Œ์•… ์ƒ์„ฑ

๊ธด ์Œ์•… ์‹œํ€€์Šค์˜ ์ƒ์„ฑ๊ณผ ๋ชจ๋ธ๋ง

์žฅ์ 

  • ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ํ•ด๊ฒฐ
  • ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ
  • ํšจ์œจ์ ์ธ ํ•™์Šต
  • ์žฅ๊ฑฐ๋ฆฌ ์˜์กด์„ฑ ํ•™์Šต
  • ์•ˆ์ •์ ์ธ ํ•™์Šต

ํ•œ๊ณ„์ 

  • ์ œํ•œ์ ์ธ ํ‘œํ˜„๋ ฅ
  • ๋ณต์žกํ•œ ํŒจํ„ด ํ•™์Šต์˜ ์–ด๋ ค์›€
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ๋ฏผ๊ฐ์„ฑ
  • ํŠน์ • ์ž‘์—…์— ์ตœ์ ํ™” ํ•„์š”
  • Attention ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ถ€์žฌ

๊ตฌํ˜„ ๋ฐ ์‚ฌ์šฉ๋ฒ•

ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

pip install torch
pip install numpy
pip install tensorflow

๊ธฐ๋ณธ ์‚ฌ์šฉ ์˜ˆ์‹œ

# IndRNN ๋ชจ๋ธ
class IndRNN(nn.Module):
def __init__(self):
super().__init__()
self.hidden_size = hidden_size
self.weight_ih = nn.Parameter(...)

์—ฐ๊ตฌ ๋ฐ ๊ฐœ๋ฐœ ํ˜„ํ™ฉ

์ดˆ๊ธฐ ์—ฐ๊ตฌ

2017๋…„์— ๋ฐœํ‘œ๋œ ๋…ผ๋ฌธ์—์„œ IndRNN์˜ ๊ฐœ๋…์ด ์ œ์‹œ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ๋ž˜๋””์–ธํŠธ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ˜์‹ ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฃผ๋ชฉ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

"Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN"

์ตœ๊ทผ ๋ฐœ์ „

๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ์—์„œ ์„ฑ๋Šฅ์ด ๊ฒ€์ฆ๋˜์—ˆ๊ณ , Attention ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ฒฐํ•ฉํ•œ ๋ณ€ํ˜• ๋ชจ๋ธ๋“ค๋„ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ƒํƒœ

Transformer ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ผ๋ถ€ ๋ถ„์•ผ์—์„œ๋Š” ๋Œ€์ฒด๋˜์—ˆ์ง€๋งŒ, ํŠน์ • ์‹œํ€€์Šค ์ž‘์—…์—์„œ๋Š” ์—ฌ์ „ํžˆ ์œ ์šฉํ•œ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

๋ฏธ๋ž˜ ์ „๋ง

๋ฐœ์ „ ๋ฐฉํ–ฅ

  • Attention ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ์˜ ๊ฒฐํ•ฉ
  • ํ‘œํ˜„๋ ฅ ๊ฐœ์„ 
  • ํšจ์œจ์„ฑ ํ–ฅ์ƒ
  • ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ ์ ์šฉ

์˜ˆ์ƒ ์‘์šฉ ๋ถ„์•ผ

  • ๊ธˆ์œต ์˜ˆ์ธก
  • ๊ธฐ์ƒ ์˜ˆ์ธก
  • ์˜๋ฃŒ ์ง„๋‹จ
  • ์‚ฐ์—… ๋ชจ๋‹ˆํ„ฐ๋ง