4-1공부/캡스톤-딥러닝

004. 딥러닝 공부 2일차 정리 2

KGW2027 2023. 3. 9. 22:56
728x90
반응형

적다보니 너무 길어진거같아서 2개로 나눴다.

앞에서 다룬건 텍스트 인식이고, 이건 텍스트 생성이니 주제가 다르기도 하고..

 

 

1. 텍스트 예측

 문장을 특성과 레이블로 분리한다.

예를 들어, I have a apple 라는 문장이 있다면 I have a는 특성이고 apple은 레이블이 된다.

이런 데이터를 학습한 모델은 You have a 라는 문장의 다음 단어를 apple로 예측할 가능성이 높아진다.

위와 같은 학습을 위해서 데이터로 된 문장을 반복해서 쪼개야 한다.

원 문장 : I have a speical apple.
-> [I have]
-> [I have a]
-> [I have a special]

이후, 가장 긴 특성값에 맞춰 pre-padding을 추가해 준다.

그렇게 되면, 특성값의 가장 마지막 element가 레이블이 되고, 그 왼쪽의 모든 값 배열은 특성이 된다.

이렇게 배열을 분리하고 나면, 예측한 단어를 출력하기 위해 뉴런을 단어 수만큼 배치한다.

(이 과정은 tf.keras.to_categorical을 이용한다.)

-> 단어 개수가 수천개만 넘어가도 수천개의 뉴런을 마지막에 배치하는 것은 큰 무리가 따를 것이지만, 그 방법 뿐이다..

 

※ 이런 방식으로 [ Embedding -> LSTM -> Dense(word_cnt) ]로 신경망을 구성하고, 노래 한 개의 가사 만을 1500 Epochs로 학습을 시킨다면 ( 데이터가 적으므로 회차를 높게 둘 수 있다 ) 정확도가 92%를 넘긴다. 다만, 노래 가사 이외의 단어는 예측하지 못하고, 마찬가지로 노래 가사 이외의 문장에는 동문서답을 내놓게 된다.

 

이렇게 예측된 단어를 뒤에 붙이고 그 문장을 가지고 다음 단어를 예측하고 붙이고를 반복하면 긴 문장을 만들 수 있다.

그러나 현재 모델에서 이렇게 만들어봐야 횡설수설한 이상한 문장이 될 뿐이다.

그렇다면 이를 어떻게 해결해야할까? 당연히 데이터를 추가하는 것이다.

 

 

2. 데이터셋 확장

 책에서는 약 1690라인의 새로운 가사들을 데이터셋으로 줬다.

그러나 이 정보들에 대해 많은 Epoch를 수행한 후 predict해도 그 결과가 좋지는 않다.

대신 이 짧은 데이터셋에 대해서도 Line 단위로 읽는 것이 아니라, 윈도우를 이용해 더 많은 데이터를 뽑아낼 수 있게 만든다.

기존 방식
The house is a big -> [The, The house, The house is, The house is a]
but now it broke -> [but, but now, but now it]

윈도우 방식 (window size 5)
The house is a big -> [The, The house, The house is, The house is a]
house is a big but -> [house, house is, house is a, house is a big]
....

이 방식을 사용하면 (단어의 수 - 윈도우의 크기) * 윈도우의 크기 만큼 추출 가능한 데이터의 양이 많아진다.

위의 두 줄 짜리 글은 기존에는 4+3 = 7개의 데이터만 추출할 수 있었지만,

윈도우 방식을 사용하면 ( 9 - 5 ) * 5 = 20개의 데이터를 추출할 수 있게 되었다.

 

이렇게 만들어낸 데이터셋에 learning_rate를 높게 주고(0.01) 100회 Epoch 로 학습을 시켜보았다.

(매 Epoch마다 약 20초 소요)

60 epoch부터 거의 수렴한 모습을 볼수 있고,

정확도는 0.53, 로스는 1.9정도로 수렴됬다.

 

I made my way라는 초기 시드 문자를 기반으로 100개의 단어를 예측해보았다.

 

i made my way
were gone and well a hell will you well 
i sound light of made 
it will such jewel 
he long always dream 
they sang will but fair oh fair oh 
do sleep ever must going 
she is cornwall should lads here and ah 
she vowed she took my mountains here workin by proud old going and ah 
without your hand too loo ral too ra 
now my feet made thy last today ah 
now soft and waxes cold dear 
them as belfast as he now you we hurled 
from the odonnell of god but when we get up to dublin

흠... 데이터셋이 노래가사여서 그런 것도 있지만 여전히 잘 못알아 보겠다..

하지만 이런식으로 엄청나게 많은 데이터셋에 대해 이 일을 하면 된다는 것 자체는 대충 볼 수 있었던 것 같다.

 

 

728x90
반응형