RNN ์ฆ, ์ํ ์ ๊ฒฝ๋ง์ ์ ์ฐ๋ ์ง ์์๋ณด๊ณ , ์ดํดํด๋ณด์.
์ผ๋ฐ์ ์ธ CNN ๋ชจ๋ธ์ ์๊ฐํด๋ณด์. ํด๋น ํฉ์ฑ๊ณฑ layer์ ์ปค๋๋ง ํ์ต๋ ๋ฟ ํด๋น ์ปค๋์ด ํ์ต๋ ๊ฒฐ๊ณผ๊ฐ, ๋ค์ ์ปค๋์ ํ์ต์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
FC ๋ชจ๋ธ ๋ํ ๋์ผํ๋ค. ๋ํ ์ด์ ๋ ธ๋์ ๋ ธ๋์ฌ์ด์ feature๋ฅผ ๋ฐ์ํ๋ weight๋ ๋ค์ layer์ weight๋ฅผ ๊ฒฐ์ ํ๋๋ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
RNN์ ๋ชจ๋ธ์ด ์ด๋ก ์ ์ผ๋ก ๋ชจ๋ธ์ด ๊ฐ๋จํ๊ณ ์ด๋ค ๊ธธ์ด์ sequential ๋ฐ์ดํฐ๋ผ๋ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
๋ํ ์ด์ ์ ๋ณด๋ฅผ ๋ฐ์ํ ์ ์๋ค๋ ์ ์ด๋ค.
"์ฒ ์๊ฐ ์๊ฐ๋ฝ์ ๋ค๊ณ ๋ฐฅ์ ํ๋ค." ๋ผ๋ ๋ฌธ์ฅ์ด ์์ ๋, ์ด์ ์ ๋ณด์ธ ์ฒ ์๊ฐ
+ ์๊ฐ๋ฝ์
+ ๋ค๊ณ
+ ๋ฐฅ
์ ์ด๋ผ๋ ์ด์ ์ ๋ณด๋ฅผ ํตํด ํ๋ค
๋ฅผ ์์ธกํ ์ ์๋ค.
์ฒ ์๊ฐ
์ ํ๋ค
๊ด๊ณ์ ๊ฐ์ด ํ์ฌ ๋
ธ๋ ์์น์ ๋จผ ์ํ๋ฅผ ์ฌ์ฉํ ๋ฌธ๋งฅ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋์ ์ผ๋ก ์ด๋ ต๋ค๋ ๋จ์ ์ด ์๋ค.
์ด์ ์ํ์ input ๋๊ฐ์ง๊ฐ ํจ๊ป ๋ค์ด๊ฐ ๋์ํ๋ค.
rnn = layers.SimpleRNN(units=hidden_size,return_sequences=True, return_state=True)
# One hot encoding for each char in 'hello'
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]
x_data = np.array([[h]], dtype=np.float32)
hidden_size = 2
cell = SimpleRNNCell(units=hidden_size)
rnn = RNN(cell, return_sequences=True, return_state=True)
outputs, states = rnn(x_data)
print("ํ๋ผ๋ฏธํฐ ๊ฐ์:", rnn.count_params())
print("weights:", rnn.weights)
print('x_data: {}, shape: {}'.format(x_data, x_data.shape))
print('outputs: {}, shape: {}'.format(outputs, outputs.shape))
print('states: {}, shape: {}'.format(states, states.shape))
ํ๋ผ๋ฏธํฐ ๊ฐ์: 14
weights:
[<tf.Variable 'rnn_3/simple_rnn_cell_3/kernel:0' shape=(4, 2) dtype=float32, numpy=
array([[-0.8238611 , 0.26491618],
[ 0.8516624 , -0.05171776],
[ 0.6305232 , -0.4280374 ],
[ 0.20209384, -0.00895429]], dtype=float32)>,
<tf.Variable 'rnn_3/simple_rnn_cell_3/recurrent_kernel:0' shape=(2, 2) dtype=float32, numpy=
array([[-0.8955449 , -0.44497135],
[ 0.44497135, -0.8955448 ]], dtype=float32)>,
<tf.Variable 'rnn_3/simple_rnn_cell_3/bias:0' shape=(2,) dtype=float32, numpy=
array([0., 0.], dtype=float32)>]
๋ค์ ์
๋ ฅ ๋จ์ผ ์ถ๋ ฅ
๋ฌธ์ฅ์ ์ฝ๊ณ ๋ป์ ํ์
ํ ๋ ํ์ฉํ๋ค. ex.) ๊ฐ์ ๋ถ์
๋ฐฅ์
, ๋จน๊ณ
, ๋ค๋๋
๋ผ๋ ๋ค์ ๋ฌธ์ฅ์ ํตํด "์๋ถ ์ธ์ฌ"๋ผ๋ ๋ป์ ํ์
ํ๋ค.
๋จ์ผ ์
๋ ฅ ๋ค์ ์ถ๋ ฅ
์ฌ์ง์ ์บก์
์์
์ ํ ๋ ์ฌ์ฉ๋๋ค.
ํ๋์ ์ด๋ฏธ์ง๋ฅผ ํตํด ํผ๊ทธ
, ์ด๋ถ
, ์๋ค
๋ผ๋ ์บก์
์ ๅคํ๊ฒ ์ป์ ์ ์๋ค.
๊ฐ ์
๋ ฅ์ ๋ํ ํํ์๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด ํด๋น๋๋ค.
๋ฒ์ญ์ด ์ด์ ํด๋น๋๋ค. ์
๋ ฅ์ ์ ๋ถ ๋ฐ๊ณ ์ถ๋ ฅ์ ํ๋ฒ์ ํ๋ค.
๋ฌธ์ฅ์ ๊ตฌ์ฑ์์๊ฐ ๋ค๋ฅด๋ฏ๋ก ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ๊ฐ์๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
Layer(์ธต)์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ์ฌ ๋ ๋ณต์กํ ๋ฌธ์ ์ ๋ํด์ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ก๊ณ ํ๋ ๊ฒ.
์์ฐจ์ ์
๋ ฅ๊ฐ์ ๋ํด์ ์ด์ ๋ฐ์ดํฐ์์ ๊ด๊ณ ๋ฟ๋ง ์๋๋ผ ์ดํ ๋ฐ์ดํฐ์์ ๊ด๊ณ ๊ฐ์ง ํ์ตํ๋ ๊ฒ.