자연어 처리 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
248번째 줄: 248번째 줄:
  
 
=== 순환 신경망 ===
 
=== 순환 신경망 ===
사용자가 '금강산도'을 입력한 뒤에는 '식후경'이라는 결과값이, '동해물과'을 입력한 뒤에는 '백두산이'라는 결과값이 나올 것이라고 대부분의 사람이 그렇게 예측한다. 순환신경망은 이러한 글이나 문장을 보고 앞뒤의 데이터 간의 연관성을 파악하여 완성시키는 알고리즘이다. 인공 신경망의 한 종류이며, 순차적인 정보를 처리하는 네트워크이다. 시간에 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망으로, 과거에 출력했던 데이터를 기억해서 재귀적으로 참조한다.<ref name="인공지능의 이해 (5/6): 순환 신경망(RNN)"> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref> 유닛 간의 연결이 순환적 구조인 것이 특징이며, 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있도록 해준다. 내부의 메모리를 사용하여 시퀀스 형태의 입력을 처리할 수 있기 때문에 필기체 인식, 음성 인식, 랭귀지 모델링, 기계번역, 이미지 캡셔닝과 같이 다소 변동이 있을 수 있는 데이터를 처리 할 수 있다는 장점이 있다. 전통적인 뉴럴 네트워크와는 달리 모든 입력값이 독립적이라고 가정하는 특징이 있으며, 순환 신경망(Recurrent Neural Networks)의 'recurrent'는 모델이 입력 시퀀스의 각 인스턴스에 같은 작업을 수행하며, 아웃풋은 이전 결과에 의존하기 때문에 생긴 명칭이다. 유닛에 토큰을 하나씩 입력하면 시퀀스를 표현하기 위해 일정한 크기의 벡터가 생성된다. 순환 신경망은 이 과정에서 기억한 연산 결과를 연산 과정에 활용한다.<ref>순환 신경망 위키백과 - https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D</ref>  
+
사용자가 '금강산도'을 입력한 뒤에는 '식후경'이라는 결과값이, '동해물과'을 입력한 뒤에는 '백두산이'라는 결과값이 나올 것이라고 대부분의 사람이 그렇게 예측한다. 순환신경망은 이러한 글이나 문장을 보고 앞뒤의 데이터 간의 연관성을 파악하여 완성시키는 알고리즘이다. 인공 신경망의 한 종류이며, 순차적인 정보를 처리하는 네트워크이다. 시간에 흐름에 따라 변화하는 데이터를 학습하기 위한 인공신경망으로, 과거에 출력했던 데이터를 기억해서 재귀적으로 참조한다.<ref> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref> 유닛 간의 연결이 순환적 구조인 것이 특징이며, 이러한 구조는 시변적 동적 특징을 모델링 할 수 있도록 신경망 내부에 상태를 저장할 수 있도록 해준다. 내부의 메모리를 사용하여 시퀀스 형태의 입력을 처리할 수 있기 때문에 필기체 인식, 음성 인식, 랭귀지 모델링, 기계번역, 이미지 캡셔닝과 같이 다소 변동이 있을 수 있는 데이터를 처리 할 수 있다는 장점이 있다. 전통적인 뉴럴 네트워크와는 달리 모든 입력값이 독립적이라고 가정하는 특징이 있으며, 순환 신경망(Recurrent Neural Networks)의 'recurrent'는 모델이 입력 시퀀스의 각 인스턴스에 같은 작업을 수행하며, 아웃풋은 이전 결과에 의존하기 때문에 생긴 명칭이다. 유닛에 토큰을 하나씩 입력하면 시퀀스를 표현하기 위해 일정한 크기의 벡터가 생성된다. 순환 신경망은 이 과정에서 기억한 연산 결과를 연산 과정에 활용한다.<ref>순환 신경망 위키백과 - https://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%8B%A0%EA%B2%BD%EB%A7%9D</ref>  
  
 
* '''필요성''' : 순환 신경망은 데이터를 순차적으로 처리하는 성질을 지니기 때문에, 단어와 단어 사이에서 언어의 고유한 순차적 성격을 알아낼 수 있다. 또한, 매우 긴 문장이나 단락, 문서를 포함하여 다양한 길이의 글을 모델링할 수 있기때문에, 시퀀스 모델링에 적합하다. 컨볼루션 신경망과 달리 제한없이 글을 포착할 수 있는 유연성도 지니고 있으며, 처음부터 문맥 의존성을 모델링하기 위해 만들어졌다. 시간 분산 조인트 처리를 위한 네트워크를 지원하는 등 많은 장점을 가지고 있다. 컨볼루션 신경망과 비교되기도 하는데, 두 방식은 문장을 모델링하는 목적이 다르므로 어느쪽이 더 낫다고 단정할수는 없다. 컨볼루션 신경망은 n-gram을 추출하려고 하고, 순환 신경망은 경계가 없는 긴 문장을 생성하는 것이 목적이다. 둘 모두 n-gram의 피처를 잡는데는 효율적일지 몰라도, 단어 순서에 관한 민감도는 어느정도 제한되는 부분이 있다.<ref name = "딥러닝 기반 자연어처리 기법의 최근 연구 동향"></ref>
 
* '''필요성''' : 순환 신경망은 데이터를 순차적으로 처리하는 성질을 지니기 때문에, 단어와 단어 사이에서 언어의 고유한 순차적 성격을 알아낼 수 있다. 또한, 매우 긴 문장이나 단락, 문서를 포함하여 다양한 길이의 글을 모델링할 수 있기때문에, 시퀀스 모델링에 적합하다. 컨볼루션 신경망과 달리 제한없이 글을 포착할 수 있는 유연성도 지니고 있으며, 처음부터 문맥 의존성을 모델링하기 위해 만들어졌다. 시간 분산 조인트 처리를 위한 네트워크를 지원하는 등 많은 장점을 가지고 있다. 컨볼루션 신경망과 비교되기도 하는데, 두 방식은 문장을 모델링하는 목적이 다르므로 어느쪽이 더 낫다고 단정할수는 없다. 컨볼루션 신경망은 n-gram을 추출하려고 하고, 순환 신경망은 경계가 없는 긴 문장을 생성하는 것이 목적이다. 둘 모두 n-gram의 피처를 잡는데는 효율적일지 몰라도, 단어 순서에 관한 민감도는 어느정도 제한되는 부분이 있다.<ref name = "딥러닝 기반 자연어처리 기법의 최근 연구 동향"></ref>
257번째 줄: 257번째 줄:
 
  <math>h_{t}=tanh</math><math>(W_{hh}h_{t-1}+W_{xh}X_{t})</math>
 
  <math>h_{t}=tanh</math><math>(W_{hh}h_{t-1}+W_{xh}X_{t})</math>
  
<math>h_{t-1}</math>은 이전 상태값을 나타내고, 인공지능은 현재 상태값을 계산하기 위해 이전상태값을 매번 참조한다. 즉, <math>y_{t}</math>는 <math>h_{t}</math> 값에 가중치 <math>w_{hy}</math>를 곱한 결괏값이다. 학습 단계에서 이 가중치 <math>w_{hy}</math>는 특정 값에서는 확신이 높고, 다른 값에서는 확신이 낮게 설정되도록 조정해야만 한다. 이 과정에서 은닉층이 여러 층 반복되면 다소 문제가 발생할 수도 있는데, 이를 해결하기 위해서 장단기 메모리(LSTM)가 사용되기도 한다.<ref name="인공지능의 이해 (5/6): 순환 신경망(RNN)"></ref>
+
<math>h_{t-1}</math>은 이전 상태값을 나타내고, 인공지능은 현재 상태값을 계산하기 위해 이전상태값을 매번 참조한다. 즉, <math>y_{t}</math>는 <math>h_{t}</math> 값에 가중치 <math>w_{hy}</math>를 곱한 결괏값이다. 학습 단계에서 이 가중치 <math>w_{hy}</math>는 특정 값에서는 확신이 높고, 다른 값에서는 확신이 낮게 설정되도록 조정해야만 한다. 이 과정에서 은닉층이 여러 층 반복되면 다소 문제가 발생할 수도 있는데, 이를 해결하기 위해서 장단기 메모리(LSTM)가 사용되기도 한다.<ref> 라인하트, 〈[https://brunch.co.kr/@linecard/324 인공지능의 이해 (5/6): 순환 신경망(RNN)]〉, 《브런치》, 2019-11-11</ref>
  
 
== 활용 ==
 
== 활용 ==

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)