[혼자 공부하는 머신러닝+딥러닝] 23강. 순차 데이터와 순환 신경망 - 자연어 처리를 위한 신경망
https://www.youtube.com/watch?v=QCh_FqPWEsk&list=PLJN246lAkhQjoU0C4v8FgtbjOIXxSs_4Q&index=27
- 순차 데이터란(sequential data)?
- 순차 데이터(sequential data)란 텍스트 데이터 혹은 시계열 데이터와 같이 특정한 규칙에 의해 순서에 의미가 있는 데이터들을 의미한다.
- 예시 :
- I have an apple. ( O )
- an have apple I. ( X )
- context가 있다고도 표현한다.
- 완전 연결 신경망이나 합성곱 신경망은 하나의 샘플(하나의 배치)을 사용하여 정방향 계싼을 수행하고 나면 해당 샘플을 버리고 다음 샘플을 처리할 때 재사용을 하지 않는다.
- 피드포워드 신경망(feedforward neural network, FFNN) : 입력 데이터의 흐름이 앞으로만 전달되는 신경망이다.
- 예시 : 완전 연결 신경망, 합성곱 신경망
- 순환 신경망이란(recurrent neural network, RNN)?
- 신경망이 이전에 처리했던 샘플 데이터를 다음 샘플을 처리하는데 재사용을 하며 해당 작업이 계속 순환되며 학습된다.
- 순환 신경망은 완전 연결 신경망에 이전 데이터의 처리 흐름을 순환하는 고리 하나만 추가를 해주면 완성된다.
- 뉴런의 순환 처리 동작은 다음과 같다.
- 순환되는 O_A에는 A에 대한 정보가 들어 있고 O_B에는 B와 A에 대한 정보가 들어 있다. A에 대한 정보 보다 B에 대한 정보가 더 많이 들어 있을 것이다. 마지막 O_C에는 A, B, C에 대한 정보가 담겨 있다.
- 순환 신경망에서 '이전 샘플에 대한 기억을 가지고 있다'고 하는데 이렇게 샘플을 처리하는 하나의 단계를 "타임스텝(timestep)이라 한다.
- 층(Layer)과 셀(Cell)
- 순환 신경망에서는 층(layer)을 셀(cell)이라고 부른다.
- 하나의 셀에는 여러 개의 뉴런이 있지만 완전 연결 신경망과는 달리 모든 뉴런을 표시하지 않는다. 하나의 셀로 층을 표현한다. 셀의 출력을 은닉상태 (hidden state)라고 부른다.
- 앞서 표현한 샘플 출력 값 O도 은닉 상태를 가리키는 것이다.
- 일반적으로 은닉층의 활성화 함수는 하이퍼볼릭 탄젠트 함수인 tanh가 많이 사용된다.
- tanh 함수도 s자 모양을 가지고 있기에 시그모이드 함수라 불리지만 차이가 있다.
- tanh 함수는 -1 ~ +1 사이 범위에서 결과 값을 가진다.
- sigmoid 함수는 0 ~ +1 사이 범위에서 결과 값을 가진다.
- 타임스텝으로 펼친 신경망
- 순환 신경망의 구조는 입력과 가중치를 곱해서 출력을 만드는 것은 완전 연결 신경망, 합성곱 신경망과 동일하다.
- 차이점으로 아래 그림에서처럼 두개의 가중치가 존재한다. 입력 X에 대해 Wx 가중치와 곱하고 이전 타임스텝의 은닉상태 h와 Wh 가중치와 곱한다.
- 피드포워드 신경망과 동일하게 뉴런마다 하나의 절편이 포함되어 있다.
- 이 결과 값을 활성화 함수를 통과시켜 새로운 은닉상태를 만든다.
- 첫번째 은닉상태의 h0은 타임스텝이 없기 때문에 모두 0으로 초기화 한다고 가정하고 사용한다.
- 순환 신경망의 가중치
- 입력층과 순환층이 있는 경우 각각 뉴런들은 완전연결된다.
- 이 경우 입력층은 4개이고 순환층은 3개이다. 이 경우 입력되는 가중치 Wx는 모두 12개가 된다.
- 순환층의 출력 h는 다시 순환층의 가중치와 곱해진다. 이 때 h는 자기 뉴런에만 적용되는 것이 아니라 전체 다른 뉴런들과 완전연결 된다.
- 빨간색 화살표 : 첫 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.
- 파란색 화살표 : 두 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.
- 검은색 화살표 : 세 번째 뉴런의 은닉 상태가 첫번째 두번째 세번째 뉴런으로 전달되는 과정을 나타낸다.
- 순환층에서 다음 타임스텝에 재사용되는 은닉 상태를 위한 가중치 Wh는 총 9개가 있다.
- 순환 신경망의 입력
- 만약 하나의 문장이 하나의 샘플이라 생각해 보자.
- 예) I am a boy
- 이러한 단어 샘플을 토큰이라 부른다.
- 하나의 단어를 여러개의 정수 혹은 실수 값으로 표현할 수 있다.
- 아래 이미지에서 5는 오타다, 4가 맞다.
- 타임스텝 크기는 4, 샘플은 하나이기 때문에 배치 차원은 1개, 토큰 하나를 표현하는 벡터는 3개로 구성되어 있다.
- 샘플의 개수 = 1
- 타임 스텝의 크기 (시퀀스의 길이) = 4
- 숫자 표현 개수 (단어 표현) = 3
- 이렇게 구성된 3차원 텐서, 배열이 순환층을 통과하게 되면 순환층에 있는 뉴런의 개수만큼 출력이 만들어지며 1차원 출력물이 만들어진다. 샘플이 여러개가 있다면 2차원 배열이 1개만 있다면 1차원 배열이 된다.
- 이것은 완전 연결 신경망과 동일하다.
- 다층 순환 신경망
- 순환층은 기본적으로 마지막 타임스텝의 은닉 상태만 출력으로 내보낸다.
- 셀의 입력은 샘플 하나당 시퀀스 길이(타임스텝)과 단어표현으로 이루어진 2차원 배열이다.
- 한개의 층만 사용하는 경우 출력은 마지막 타임 스텝의 은닉 상태만 출력 한다.
- 여러개의 층을 쌓는 경우 모든 셀의 타임스텝의 은닉 상태를 출력한다.
- 그래야 다음 셀에 3차원 텐서의 입력 상태가 유지될 수 있기 때문이다.
- 이 3차원 텐서는 최초 입력과는 달리 단어표현 항목이 이전층의 셀에 있는 뉴런 개수가 된다.
- 첫 번째 셀 : 모든 타임 스텝의 은닉 상태만 출력
- 두 번째 셀 (마지막 셀) : 마지막 타임 스텝의 은닉 상태만 출력
- 순환 신경망을 사용한 예측
- 순환 신경망도 마지막에는 밀집층(dense)을 두어 클래스를 분류한다.
- 다중분류의 경우 출력층에 클래스 개수만큼 뉴런을 두고 소프트맥스 활성화 함수를 사용한다.
- 이중분류의 경우 하나의 뉴런을 두고 시그모이드 활성화 함수를 사용한다.
- 마지막 순환 신경망의 셀 출력은 1차원이기 때문에 flatten 클래스를 이용해 차원을 1차원으로 만드는 작업 없이 그대로 밀집층에 사용할 수 있다.
- 아래 이미지에 사용된 샘플은 20개의 타임스텝으로 이루어져 있고 각 타임스텝은 100개의 표현 또는 특성으로 이루어져 있다.
- 셀의 출력은 은닉 상태의 크기와 같으며 셀에 있는 뉴런의 개수와 같다고 할 수 있다. (10,)이 된다.
- 출력층에는 세개의 뉴런과 소프트맥스 활성화 함수가 사용되었다.
- reference :
https://turnoveranewleaf4me.tistory.com/46
'데이터분석-머신러닝-AI > 강의 정리' 카테고리의 다른 글
[혼자 공부하는 머신러닝+딥러닝] 25강. LSTM과 GRU 셀 - 고급 순환층 (1) | 2023.11.29 |
---|---|
[혼자 공부하는 머신러닝+딥러닝] 24강. 순환 신경망으로 IMDB 리뷰 분류하기 - 영화 리뷰 감상평을 분류해보자 (0) | 2023.11.29 |
[혼자 공부하는 머신러닝+딥러닝] 22강. 합성곱 신경망의 시각화 - 가중치, 특성치 시각화 (1) | 2023.11.27 |
[혼자 공부하는 머신러닝+딥러닝] 21강. 합성곱 신경망을 사용한 이미지 분류 - 패션 mnist를 이용한 분류 코딩 학습 (0) | 2023.11.26 |
[혼자 공부하는 머신러닝+딥러닝] 20강. 합성곱 신경망의 개념과 동작 원리 배우기 - 2차원 이미지를 그대로 학습 해보자! (2) | 2023.11.26 |
댓글