
484
3
딥러닝의 기반 지식
>>> n,counts = 0,torch.zeros(len(vocab))
>>> for x,y in dls.valid:
n += y.shape[0]
for i in range_of(vocab): counts[i] += (y==i).long().sum()
>>> idx = torch.argmax(counts)
>>> idx, vocab[idx.item()], counts[idx].item()/n
(tensor(29), ‘thousand’, 0.15165200855716662)
가장 일반적인 토큰의 인덱스 번호는
29
이며, 이에 해당하는 단어는
thousand
입니다. 항상 이
토큰만 예측하더라도 대략
15
%의 정확도를 얻을 수 있습니다. 이와 비교해보면 학습시킨 세
계층 신경망은 성능이 훨씬 더 좋다고 볼 수 있네요!
TIP
저는 모든 숫자 단어의 사이마다 있는 구분 기호가 가장 일반적인 토큰이라고 추측했습니다. 하지만 토큰을 살
펴보니 여러 단어가 결합하여 큰 수를 표현한다는 점을 깨달았죠. 그래서
10
,
000
이라는 숫자까지의 작은 숫
자들에는 ‘천(
thousand
)’이라는 단어가 많이 쓰일 수밖에 없습니다. 가령 ‘오천’, ‘오천일’, ‘오천이’와 같이 말입
니다! 데이터를 살펴보면 미묘한 특징과 자칫하면 놓칠지도 ...