본문 바로가기
반응형

분류 전체보기90

트랜스포머(Transformer) (4) - multi-head attention 4. 어텐션 (Attention) 첫번째 인코더 레이어에 입력 값이 들어오고 여러 개의 인코더 레이어 반복해서 거침 Multi-Head Attention 레이어 Reference https://www.youtube.com/watch?v=AA621UofTUA 이 글은 나동빈님의 'Transformer : Attention Is All You Need' 논문 리뷰 영상을 보고 정리한 글입니다. 2022. 6. 4.
트랜스포머(Transformer) (4) - 인코더와 디코더 인코더 (Encoder) 트랜스포머는 하나의 인코더 층이 총 두개의 서브 층으로 이루어짐 : 셀프어텐션, 피드포워드 신경망 1) 셀프어텐션 : multi-head self-attention 블록으로 셀프 어텐션을 병렬적으로 사용함 2) 피드포워드 신경망 : position-wise FFNN 블록으로 그냥 일반적인 피드 포워드 신경망임 self-attention : 인코더 파트에서 수행하는 어텐션 - 각각의 단어가 서로 어떤 연관성을 가지고 있는지 구하기 위해 사용 ex) I am a teacher : 문장을 구성하는 각각의 단어 I, am, a, teacher 에 대해서 각각의 단어끼리 attention score 을 구해서 서로 어떤 단어와 높은 연관성을 갖는지에 대한 정보를 학습시킴 어텐션을 통해 전.. 2022. 6. 4.
트랜스포머(Transformer) (3) - 구조, 동작원리, 포지셔널 인코딩(Positional Encoding), 어텐션(Attention) 트랜스포머의 구조 - Attention Is All You Need 트랜스포머는 어텐션 기법만 쓰기 때문에 RNN, CNN 은 전혀 사용하지 않음 - 그래도 기존의 seq2seq 의 인코더-디코더 구조는 유지 - 인코더에서 입력 시퀀스를 입력받고, 디코더에서 출력 시퀀스를 출력 그렇기 때문에 문장 안에 포함된 각각의 단어들의 순서에 대한 정보를 주기 어려움 문장내 각각 단어의 순서에 대한 정보를 알려주기 위해 positional encoding 사용 이러한 아키텍쳐는 BERT 와 같은 향상된 네트워크에서도 채택됨 어텐션 과정 한번만 사용하는 것이 아니라 여러 레이어를 거쳐서 반복하도록 만듦 인코더와 디코더 N 번 만큼 중첩되어 사용하도록 만듦. - 이전 seq2seq 구조에서는 인코더 / 디코더 하나에서.. 2022. 6. 4.
딥러닝으로 음향모델 모델링 (End-to-end algorithm) 이 글은 ETRI 박전규 박사님의 언어교육 성과 특강 강의를 듣고 정리한 글입니다. 딥러닝을 통한 음향모델의 모델링 (end-to-end) 왼쪽 그림이 전통적인 음성인식 모델 : 음향, 언어, 발음 모델 다 별도로 모델링. 이전에는 음성인식 디코딩을 위해 음향모델링, 언어모델링, 발음변환기 다 따로 전문가가 만들어야했음. 음성인식기 하나 만드려고 하면 대략 10명 정도가 개발. (음향 전문가 2, 언어전문가 2, 발음전문가 2, 후처리 등등..) E2E 는 한사람이 개발 가능 - 음성 파형 & 음성 파형이 무엇을 나타내느냐(전사정보) 위 두 가지 정보만 넣어주면 모델 완성. E2E 모델 : acoustic 모델, language 모델 implicit 하게 다 가지고 있다고 보면 됨. (E2E 가 강력한 .. 2022. 6. 3.
음향모델의 모델링 - ASR 의 acoustic model 이 글은 ETRI 박전규 박사님의 언어교육 성과 특강 강의를 듣고 정리한 글입니다. 음향 모델의 모델링 음향모델 = 어떻게 음소를 잘 모델링하느냐 한국어 음소의 경우, 초성 중성 종성 음가를 40개 남짓의 함수로 표현? - 이렇게 하면 성능 매우 떨어짐. - 100개 중 하나, 1000개 중 하나로 표현하는 것도 어려움 - 따라서 triphone 사용 - triphone modeling : 음소를 거의 10만개, 15만개까지 표현 - 굉장피 복잡한 음소 표현 방법론들이 많음 - 여기서 중요한건, 그 기저 단위는 '음소' 라는 것. 음소를 얼마나 잘 classify 하느냐가 음소인식의 task 이고 acoutic modeling 의 핵심이다. 음향 모델을 모델링할 때 고려해야 하는 것들 Speech and.. 2022. 6. 3.
음성인식(ASR)의 과정과 기본 구조 이 글은 ETRI 박전규 박사님의 언어교육 성과 특강 강의를 듣고 정리한 글입니다. 음성인식의 기본 구조 위 사진은 음성인식의 가장 기본적인 설계구조 음성인식, 음성합성 모두 acoustic model 이 존재 - 전통적인 방식으로는 HMM 모델 사용 Acoustic model : '소리'를 다루는 것 - speech 음성 자체를 이용해 통계자료로 모델링해서 만든 모델 - 음소, 아 / 에 / 이 / 오 / 우 등을 다루는 것 Language model : '텍스트'를 이용해 모델링 - 형태소, 어절 등의 통계적인 접속 정보 / 어휘의 쓰임새를 모델링 Vocabulary dictionary : 발음사전. 요즘 음성인식 트렌드에서는 발음사전 거의 안씀. - but 여전히 최신 트렌드에서 acoustic, .. 2022. 6. 3.
트랜스포머(Transformer) (2) - Attention 으로 seq2seq 문제 해결 이 글은 나동빈님의 'Transformer : Attention Is All You Need' 논문 리뷰 영상을 보고 정리한 글입니다. Seq2Seq 의 문제 : 하나의 문맥 벡터가 소스 문장의 모든 정보를 가지고 있어야 하므로 성능이 저하됨 해결 방안 : 그렇다면 매번 소스 문장에서의 출력 전부를 입력으로 받으면 어떨까? ==> 'Attention' 메커니즘 사용해 인코더의 모든 출력 참고 가능 매번 단어가 출력되어서 hidden state 가 나올 때마다 그냥 그 값들을 전부 출력 값으로써 별도의 배열(w)에 다 기록해놓음 각각의 단어를 거치면서 나오는 h1, h2, h3, h4 들을 다 저장. 출력 단어 생성할 때마다 이 소스 단어들(w)을 다 참고하겠다는 아이디어 각 단어들을 다 똑같이 그냥 참고.. 2022. 6. 3.
트랜스포머(Transformer) (1) - Seq2Seq 모델의 한계점 이 글은 나동빈님의 'Transformer : Attention Is All You Need' 논문 리뷰 영상을 보고 정리한 글입니다. 트랜스포머 (Transformer - Attention Is All You Need) '어텐션' 이라는 메커니즘을 전적으로 활용하는 아키텍쳐 많은 최신 자연어 처리 모델이 활용하고 있는 아키텍쳐 - 트랜스포머 제안 Transformer 의 메인 아이디어는 BERT, GPT 와 같은 최신 아키텍처에 채택되어 Google 번역기, 파파고 등에 활용되고 있음 딥러닝 기반의 기계 번역 발전 과정 2021년 기준 최신 고성능 모델들은 트랜스포머 아키텍쳐를 기반으로 하고 있음 GPT : 트랜스포머의 '디코더(decoder)' 아키텍처 활용 BERT : 트랜스포머의 '인코더(enco.. 2022. 6. 2.
신경망 출력층 설계하기 (분류, 회귀에 맞는 활성화 함수 선정) 출력층 설계하기 신경망은 분류와 회귀 모두에 이용가능 기계학습 문제는 분류(classification)와 회귀(regression)로 나뉨 분류 : 데이터가 어떤 클래스에 속하느냐의 문제 ex) 사진 속 인물의 성별 분류 문제 회귀 : 입력 데이터에서 (연속적인) 수치를 예측하는 문제 ex) 사진 속 인물의 몸무게(57.4kg?) 를 예측하는 문제 * '회귀' 의 기원 : 19세기 후반ㅡ 영국의 프랜시스 골턴 경이 사람과 완두콩을 대상으로 크기를 측정했는데, 관찰 결과 키가 큰 부모의 자식은 부모보다 작고, 작은 부모의 자식은 부모보다 큰, 즉 평균으로 회귀하는 경향이 있음을 알았음. - 그 사이에는 선형 관계가 있어 부모의 키로부터 자식의 키를 예측할 수 있고, 그 예측 결괏값이 연속적인 수치였음 어떤.. 2022. 5. 31.
넘파이(numpy)로 신경망 구현하기 최종 코드 넘파이로 신경망 구현 def init_network(): network = {} network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) network['b1'] = np.array([0.1, 0.2, 0.3]) network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]]) network['b2'] = np.array([0.1, 0.2]) network['W3'] = np.array([0.1, 0.3], [0.2, 0.4]]) network['b3'] = np.array([0.1, 0.2]) return network def forward(network, x): W1, W2, W3 = network['W.. 2022. 5. 31.
반응형