본문 바로가기

MLOps 개발자 양성과정/ml&dl

[Day-57] chap.09 텍스트를 위한 인공 신경망(순환 신경망

ㆍ피드포워드 신경망(feedforward neural network)

(완전 연결 신경망, 합성곱 신경망)

샘플마다 독립적 데이터로 하나의 샘플을 학습한 후 깔끔하게 지워

하나의 샘플(배치)을 사용하여 정방향 계산을 수행 후 해당 샘플은 버려지고 다음 샘플을 계산할 떄 사용하지 않음

피드포워드 방식: 입력 데이터의 흐름이 앞으로만 전달되는 신경망

 

 

ㆍ순환신경망 (RNN) recurrent neural network

: 신경망이 이전에 처리했던 샘플을 다음 샘플 계산 시 재사용하기 위한 신경망

- 완전 연결 신명망에서 이전 데이터의 처리 흐름을 순환하는 고리 하나 추가(주로 은닉층에 추가)

하나의 샘플이 전달되었어 출구가 있어 바로 다음 층으로 이동하는 게 아니라 다시 돌아와 학습내용에다가 두번째 학습내용을 곱해 이 때 이전 데이터는 다음 층으로 나가

 

- 이전 타임스텝의 샘플을 기억하지만 오래될수록 순환되는 정보 희미해져 (=> LSTM / GRU)

 

순차 데이터

텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터

(글, 대화, 일자별 날씨, 일자별 판매 실적)

 

텍스트 데이터 예시 "I am a boy"는 쉽게 이해할 수 있지만

boy a I am 말이 되지 않아 (맥락 검색 )

시계열 데이터의 예: 일별 온도를 기록한 데이터에서 날짜의 순서를 뒤죽박죽 섞는다면 내일의 온도를 쉽게 예상하기 어려워

 

학습 종류 전이학습

 

순차 데이터를 다룰 때는 이전에 입력한 데이터를 기억하는 기능이 필요

ex) 별로지만 추천해요

추천해요가 입력될 떄 별로지만을 기억하고 있어야 글이 무조건 긍정적이라고 판단하지는 않아

학습 기억해야 해 메모리역할을 하는 기능도 갖고 있어(실제 메모리는x)

 

<용어>

타임스텝

: 샘플을 처리하는 한 단계

: 하나의 층

여러 개의 뉴런이 있지만 모두 표시하지 않고 하나의 셀로 층을 표현

RNN에서 층이라고 부르지 않고 셀이라고 불러(하나의 층에 은닉상태도 포함?)

은닉상태

: 셀의 출력을 의미

시퀀스

: 하나의 샘플

시퀀스 안에는 여러 개의 아이템이 존재=> 시퀀스의 길이 == 타임스텝의 길이

 

ex) 

샘플 데이터 : I am a boy

=> 신경망 숫자로 전달해야 해

- 하나의 샘플(=시퀀스)이 네 개의 단어로 구성(아이템)

- 하나의 단어는 세 개로 쪼개져(각 단어를 표현하는 데세 개의 숫자가 필요하다고 가정)

(1, 4, 3)

1: 샘플

4: 타임스텝 길이

3: 각 단어표현 숫자 갯수

 

기본 구조

입력 * 가중치 => 활성화 함수 => 다음 층으로 전달

                                                    층의 출력을 다음 타임스텝에 재사용

 

활성화 함수: 하이퍼볼릭 탄젠트 함수인 tanh

: -1~1사이의 값으로 압축해서 내보내

 

가중치 계산 두 번 해.

입력 * 가중치1 / 이전 타임스텝의 은닉상태 * 가중치2

 

신규 샘플 들어왔을 때 타임스텝에서 입력값 * 가중치

두 번째 타임스텝이 들어올 경우 첫 번째 데이터 다시 

맨 처음 샘플 입력했을 때 이전 타임스텝이 없기 때문에 모두 0으로 초기화

 

<예시>

 

1. 

2. 순환층에서

뉴런의 갯수 3개기 때문에 돌아가는 타임스텝 3개

 

입력이 순환층을 통과하면 순환층의 뉴런의 갯수만큼 출력됨

=> 1차원 배열로 변환됨

 

 


고급순환층

시퀀스 길 때 학습하는 메모리

시퀀스가 길수록 순환되는 은닉상태에 담긴 정보가 점차 희석되기 때문

ㆍLSTM(LongShortTermMemory)

: 단기 기억을 오래 기억하기 위해 고안됨

- 활성화 함수 두 개 써(시그모이드 / tanh)

- 상태도 두 가지 상태(은닉상태 / 셀 상태(순환층 내부에서만 사용됨 )

- 게이트 세가지

입력게이트: 새로운 정보를 셀 상태에 추가

출력 게이트: 셀 상태가 다음 은닉 상태로 출력

삭제 게이트: 기존에 필요없는 정보를 삭제하는 셀 상태 있는 정보를 삭제

 

ㆍGRU(Gated Recurrent Unit) LSTM 간소화 버전

가중치가 적기 때문에 계산량이 적음

성능 거의 대등해

 

모든 타임스텝에서 사용되는 가중치는 wh 하나?

모든 뉴런에 동일한 전이값이 다 들어가

 


왜곡 / 첨도 /

중앙값과 평균값 비교

정규분포 모양? 쏠림? 꼭짓점 위치?

 


LSTM

바깥쪽 큰 셀 안에 작은 셀 기본 4개 들어가

위쪽은닉상태

셀상태

붉은거 시그모이드

파란색 탄

 

simpleRNN보다 성능 훨씬 좋아...

손실율 줄어들어

 

입력쪽 출력쪽 삭제쪽

동시에 진행돼 병렬 처리

 

 

코랩에서는 전체 실행 하지 말것!!!

특히 훈련 동시에... 

병렬처리

 

코랩 데스크탑에 설치하고 싶으면

반드시 GPU 있어야

nvidia spk

cupa -

(백업 해놓고 하기)

 

*대형컴퓨터 unix

이걸 linux

맥북osx

 

 

혼공

이 모델은 어떤 원리로 어떻게 사용하면 돼

사용방법을 공부

 

모델