본문 바로가기

자연어처리4

44.[RNN기초] RNN(many to many) 순전파 구현(이론, 실습) 이전 시간까지 주어진 문장이 문법에 맞으면 1, 아니면 0으로 예측하는 RNN 기반 인공신경망을 제작하고 훈련하였다. as soon as로 배치되었을 때 1이고 as as soon, soon as as 이라면 0으로 두었다. 이번엔 가장 간단한 생성형 RNN을 접근해 보자. 바로 many to many 문제이다. 아주 쉽게 접근하는 방법으로 'hello' 문제를 생각해 볼 수 있다. 한글자를 입력하면 그 다음 글자를 예측하는 문제이다. 즉 아래와 같다. 1. h 입력 → e 출력 2. e 입력 → l 출력 3. l 입력 → l 출력 4. l 입력 → o 출력 지금까지 배운 DNN으로 해결할 수 있지 않을까? 생각이 들 수 있는데 나중에 보여주겠지만 잘 되지 않는다. 예를 들어 3번과 4번에서 같은 l이지.. 2023. 9. 23.
40.[RNN기초] RNN(many to one) 순전파 구현(실습) 이전시간에 아래의 순환 셀과 분류기(fc)에 대하여 각 가중치는 아래와 같음을 증명하였다. Wxh = ( sequence length(2), hidden node(3) ) → ( 2, 3 ) Whh = ( hidden node(3), hidden node(3) ) → ( 3, 3 ) Bh = (1, 1) Wy = ( hidden node(3), output feature(1) ) → ( 3, 1 ) By = (1, 1) 순전파를 코드로 구현해 보자. 1. 데이터 전처리 38차시에서 실시했던 전처리 코드이다. 그대로 시행하면 된다. import numpy as np from itertools import * np.random.seed(230907) dataset = ["as", "soon", "as"] d.. 2023. 9. 13.
39.[RNN기초] RNN(many to one) 순전파 구현(이론) 이전시간에 자연어 데이터를 이용하기 위해 문장을 의미 있는 단위로 구별(토크나이징)하고 구별한 토큰을 컴퓨터가 이해할 수 있는 데이터로 변환(워드 임베딩)을 실시하였다. 그리고 데이터를 직렬로 이어 붙이면 순서에 의미가 없는 데이터가 되므로 병렬로 쌓아 (batch, time steps, sequence length) 형태로 전처리함을 이야기하였다. as, soon의 문자에 대해 순서대로 ('as', 'as', 'soon'), ('soon', 'as', 'as'), ('as', 'soon', 'as') 이고 as → [1. 0.], soon → [0. 1.] 일 때 데이터 전처리 결과는 [ [ [1. 0.] [1. 0.] [0. 1.] ] [ [0. 1.] [1. 0.] [1. 0.] ] [ [1. 0... 2023. 9. 12.
38.[RNN기초] 자연어 데이터는 어떻게 접근해야 할까? 드디어 연구를 끝냈다! 1. 들어가며 이전까지 학습한 내용의 데이터는 ( 데이터 갯수, 데이터 특징 )으로 구성된 csv 자료였거나 ( 데이터 갯수, 가로, 세로, 채널 )로 구성된 이미지 파일이었다. 이번엔 인공신경망에 자언어 데이터를 입력할 수 없을까? 자연어란 인간이 사용하는 언어라고 쉽게 생각하자. 예를 들어 "as soon as", "as as soon", "soon as as" 세 개의 문장에 대해 문법적으로 어떤 것이 의미 있는지 구별할 수 있는 인공신경망을 제작한다고 하자 "as soon as" → 1 "as as soon" → 0 "soon as as" → 0 "as soon as"는 문법적으로 올바르고 영어에서 널리 사용된다. 이것은 어떤 특정한 사건이나 상태가 발생한 직후 또는 직후에.. 2023. 9. 11.