본문 바로가기

분류 전체보기88

트랜스포머(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.
넘파이(numpy)로 신경망 구현하기 신경망에서의 행렬 곱 넘파이 행렬을 사용해 신경망 구현해보기 x1, x2 에서 y1, y2, y3 로 가는 간단한 신경망 구현 (편향과 활성화 함수 생략하고 가중치만 갖는) X, W, Y 형상 주의 (X와 W 의 대응하는 차원의 원소 수 일치해야 함) 간단한 신경망의 행렬 곱 구현 다차원 배열의 스칼라곱을 구해주는 np.dot 함수를 통해 이렇게 간단하게 결과 Y 계산 가능 Y 의 원소가 100개든 1000개든 한 번의 연산으로 계산 가능 만약 np.dot 이 없었으면 for 문 사용해서 계산해야 함 따라서 행렬의 곱으로 한꺼번에 계산해주는 이 기능은 신경망 구현에 있어서 핵심 3층 신경망 구현하기 (순방향 처리 구현) 입력부터 출력까지의 순방향 처리 구현해보기 신경망에서의 계산을 행렬 계산으로 정리할 .. 2022. 5. 31.
numpy를 이용한 다차원 배열 계산 - 신경망 효율적 구현 다차원 배열 다차원 배열도 일단 '숫자의 집합' 숫자가 한 줄로 있는 것부터 시작해서 직사각형, 3차원, 더 일반화하여 N차원으로 나열하는 모든 배열을 '다차원 배열' 이라고 함 넘파이로 작성한 1차원 배열 np.ndim(A) : 배열의 차원 수 확인 A.shape : 인스턴스 변수 shape 로 배열의 형상 확인하기 - "튜플 반환" 1차원 배열이라도 다차원 배열과의 형태 통일을 위해 튜플 형태인 (4, ) 로 반환 예를 들어 2차원 배열이면 (4, 3), 3차원 배열이면 (4, 3, 2) 형태로 반환됨 이 예시에서는, A 는 1차원 배열이고 원소 4개로 구성되어 있다는 것을 확인 가능 넘파이로 작성한 2차원 배열 B는 '3 x 2 배열' : 처음 차원에는 원소가 3개, 다음 차원에는 원소가 2개있다는.. 2022. 5. 31.