자연어처리 19

Attention RNN 모델과 코드 구조

seq2seq RNN 모델에서 인코더 알고리듬을 개량해 보자. 앞서 기술된 인코더 구조에서는 마지막 LSTM 셀로부터 출력되는 은닉층 정보 h 가 디코더의 LSTM 첫 번째 셀에 전달하는 단순한 구조를 보여주었다. 개선 이전의 인코더에서는 문장 전체를 쪼개서 각각의 LSTM 셀에 입력하여 은닉층 연산 후 펼쳐진 마지막 LSTM 셀에서 출력되는 은닉층 정보 h 를 디코더에 입력했었다. 개선 후에는 인코더 각각의 LSTM 셀로부터 출력되는 은닉층 정보를 모은 h 를 디코더에 입력하는 방법이다. 이렇게 하면 인코더 sequence 의 ‘고정길이’라는 제약을 벗어날 수 있다. 즉 마지막 LSTM 하나의 셀에서 결과를 넘기는 것에 비해 입력데이터 수에 해당하는 만큼의 은닉층 정보 전체를 전달하므로 고정된 길이의 ..

자연어처리 2023.03.13

Attention 알고리듬 이해를 위한 Sequence To Sequence 알고리듬

이 블로그는 한빛 출판사에서 출간된 사이토 고키 저 "Deep Learning from Scaratch ⓶ 밑바닥부터 시작하는 딥러닝 2편" 의 7장 2절 seq.seq 의 세부 해설이다. 자연어 처리에 관심이 있는 국내 독자라면 그 내용의 뛰어남에 필독을 권해 본다. 하지만 제목에서 '밑바닥부터...'가 암시하듯 이 책은 철저하게 바텀업 방식으로 씌어졌으며 논리상 아무런 문제가 없다고 볼 수 있다. 하지만 개개인의 자연어 처리에 대한 이해도가 낮을 경우 다음과 같은 문제가 발생함을 지적해 둔다. 책 후반인 7장에서 seq2seq 를 읽고 코드를 실행시키다 보면 바닥에서의 기본적인 알고리듬들이 잘 보이지도 않고 이해가 제대로 되지 않는 경험을 할 수도 있다. 즉 7장의 내용은 그 앞까지 전개해 온 내용을..

자연어처리 2023.03.05

Attention RNN 알고리듬에서의 shape 변경 기법

LSTM Attention 알고리듬을 살펴보wk. hs 벡터에 포함된 각 단어 별 중요도를 나타내는 확률 가중치 벡터 a와 hs 벡터를 아마디르 곱셈 후 특정 축을 중심으로 합산하여 shape을 변경하는 기법을 볼 수 있다. 이 과정을 학습하자. 텐서플로우 리스트 데이터 A에 대해서 shape 과 argmax 값을 살펴보자. 일차원적 리스트 구조의 데이터는 (5,)로 표현된다. argmax(A)에서 numpy=2는 A의 최대값이 위치한 30의 위치를 나타낸다. 1 import tensorflow as tf A = tf.constant([2, 20, 30, 3, 6]) print(A.shape) tf.math.argmax(A) 텐서플로우 2차원 리스트 데이터 B에 대해서 shape 과 argmax 값을 살..

자연어처리 2023.01.20

word2vec, CBOW (Continuous Bags of Words)

참조: ”Deep Learning from Scratch ⓶: 밑바닥부터 시작하는 딥러닝2“, 3장 word2vec, pp.113 ~ 141., 사이토 고키 지음, 한빛미디어. 분산가설에 따른 통계적 기법과 달리 신경망 학습법을 사용하는 추론적 방법 즉 word2vec 알고리듬에 대해서 살펴보자. word2vec 알고리듬에서는 인접한 맥락(문맥, context)이 주어져 있을 때 무슨 단어가 가장 적합할지 추론하는 알고리듬이다. 즉 맥락이 주어진 상태에서 ? 에 적합한 단어를 단어장에서 확률적으로 가장 높은 확률값을 가지는 단어를 찾아내는 작업이다. 맥락으로 주어지는 입력 단어들은 숫자 라벨 값을 가지고 있는바 이들을 one-hot 코드화 하여 사용하면 편리하지만 통계적 방법에서 동시발생 매트릭스처럼 그..

자연어처리 2023.01.03

Simple Bow 알고리듬에서의 Back-propagation of Matrix Multiplication

다음 그림의 Simple CBOW 알고리듬에 의한 알고리듬을 살펴보면 입력 데이터의 은닉층 처리와 출력층 처리에 Matrix Multiplication 처리가 핵심적인 역할을 담당한다. Simple CBOW 알고리듬 학습과정 알고리듬을 코딩하려면 MatMul층에 대한 순전파(forward propagation)와 역전파(back-propagation) 연산이 필수적일 것이다. 순전파 연산은 메트릭스의 곱셈과 덧셈 연산을 이해하면 쉽게 코딩이 충분히 가능하지만 다층 구조에서 역전파는 합성함수의 편미분 값들을 체계적으로 연산할 필요가 있다. 머신러닝에서 역전파 연산의 필요성은 웨이트 값들을 랜덤한 값으로 초기화하므로 Cost 함수가 취해야 할 최소값과는 큰 차이가 있다. 이러한 차이를 줄여 학습을 통해 Co..

자연어처리 2023.01.03

IMDB 영화 리뷰 데이타 베이스 Sentiment 분석

스탠포드 대학 서버에서 제공하는 IMDB 데이타 베이스를 사용하여 Sentiment 분석을 해 보기로 한다. Sentiment 라 함은 여론조사는 아니고 특정 사안에 대한 쏠림 경향 정도로 생각하면 될 듯하다. 첫 번째 시도는 Sevastian Raschka의 “Python Machine Learning” 8장의 오픈 소스를 사용해 보았으나 실제로 결과를 얻어낼 수 없었다. 이미 Sevastian Raschka의 친절한 가이드 내용에 따라 tfidf 계산 까지 성공적으로 마쳤으나 마지막 부분에 내용을 읽어 보면 코드 실행 시간이 데스크 톱 PC를 사용할 경우 40분이 걸린다는 언급이 있긴 하지만 뭔가 찾기 어려운 버그들이 내재되어 있는듯하여 또 다른 스텐포드 대학쪽에서 Github 에 올려놓은 오픈소스로..

자연어처리 2022.12.19

한글 자연어 처리 KoNLPy 설치

아래의 내용은 아래 url 주소의 블로그 내용을 참조하였음. 참조: 캡스톤 디자인 프로젝트 A: 한글 자연어 처리 - konlpy의 형태소 분석기 https://seokyung.tistory.com/2 한글 자연어 처리를 위한 koNLPy 라이브러리를 Colab에 설치하여 실행해 보자. 한글 형태소 분석기 라이브러리 konlpy 를 설치하고 이어서 한글 토큰화에 필요한 kss 라이브러리를 설치한다. 1 !pip install konlpy 2 !pip install kss 윈도우즈10 이나 MAC, LINUX 시스템에 설치할 경우 자바와 관련 JPype 설치 문제가 까다로운 편이지만, 리눅스 기반인 Colab에서는 웬만한 라이브러리는 이미 설치되어 지원되기 때문에 JPype 를 굳이 설치할 필요가 없다. ..

자연어처리 2022.07.04

IMDb 영화등급 설정 파라메터 연구 사례

수많은 영화들이 성공적 흥행을 목표로 쏟아지고 있는 미디어 세계에서 개봉 이전에 광고 중인 영화의 등급(rate) 예상에 관한 사례를 살펴보자. IMDb 영화 리뷰에 의한 학습 및 테스트에서처럼 개봉 이후 충분히 확보된 영화 리뷰 결과를 사용하여 머신 러닝 시키는 경우도 있겠지만 반면에 본능적인 평가를 택하는 경우도 있을 수 있다. 하지만 지금도 수없이 쏟아지는 영화들에 대해서 영화 리뷰 데이터나 본능을 배제하는 좀 더 괜찮은 방법은 없을까? IMDb를 대상으로 하는 (실제 사례)를 소개하기로 한다. 대략 내용은 IMDb 웹 사이트 접근법 및 데이터 수집 방법을 제시한다. 아울러 수집된 포스터 데이터를 대상으로 안면인식 알고리듬을 적용하여 배우 수를 추적하고 배우 수를 파라메터로 하여 영화 등급 설정과의..

자연어처리 2022.07.03

Sentiment 분석에서 문서의 토큰화(Processing documents into tokens)

영화리뷰 데이타 세트가 준비되었으면 준비된 텍스트의 집합체를 어떻게 개별 단위의 토큰으로 쪼갤 것인지 하는 문제를 생각해 보자. 문서를 토큰화 하는 방법은 앞장에서 처리했던 클리닝한 문서 데이타(cleaned documents)를 대상으로 여백을 중심으로 단어를 쪼개는 것이다. 그러한 목적을 달성하기 위한 함수도 작성해야 하지만 아울러 아나콘다 TensorFlow 가상환경에 PyPrind에서 처럼 귀찮지만 라이브러리를 설치해야 한다는 점이다. 이미 경험이 있으면 아래 내용을 일독 후 10분 이내에 처리할 정도의 코딩 실력을 갖추도록 하자. 토큰화 관점에서 또 다른 유용한 기법으로서 word stemming 알고리듬이 있는데 이는 단어의 변환 과정애서 어근(root)을 찾아 내는 것이다. 원조 어근 알고리..

자연어처리 2022.07.01