Processing math: 31%

Chapter 1: 음성인식 연구 동향 및 문제 정의

Table of contents

1.1 음성인식 문제 정의

1.2 음성인식 연구 동향

1.1 음성인식 이란?

v  마이크를 통해 입력 받은 음성(speech)이 주어졌을때, 확률이 가장 높은 문장(단어의 열)을 출력

 

v                  

      W={w1,w2,,wU} : U개의 단어 시퀀스

       X={x1,x2,,xr} : 음성 시퀀스

1.1 E2E 관점의 음성인식 문제정의

 음성인식을 입력end (음성)에서 출력end (문장)으로의 변환의 문제로 본다면

  음성인식문제는

   x1xr (Continuous vector space에서의 13차 벡터 𝑇개의 시퀀스)에서
     w1,,wU(𝑉개의 서로 다른 값을 가지는 discrete symbol𝑈의 시퀀스)로의 번역 문제로 재정의 할 수 있다

이상적인 E2E 시스템 구현은 불가능

이상적인 E2E시스템: 전체 시스템을 블랙박스로 보고 데이터만 주면 알아서 시스템이 학습하는방식

   무한개의 입력 시퀀스에서 무한개의 출력 시퀀스로 매핑하는 시스템은 구현이 불가능하다

1.1 E2E 음성인식 구현 시 입출력 복잡도

음성인식 시스템의 가능한 입력 개수 분석

   가정: 입력 길이 1, 44.1K, 샘플 당 2byte 사용

   저장에 1 × 44100 × 2 = 88,200 byte 필요

   가능한 입력의 개수: 288200 × 8

   입력 길이의 제한이 없으므로 가능한 입력의 개수는 무한대이다

음성인식 시스템의 가능한 출력 개수 분석

   어휘를 구성하는 단어의 수(𝑉) : 무한대 (지명, 인명 등 제한이 없으며 신조어가 계속해서 생성된다)

   연속음성인식에서는 입력 파형만을 가지고 몇 개의 단어로 구성된 문장인지 알수 없다

1.1 DNN-WFST에서의 문제 정의

기호 설명

          W:w1wN
- N개의 단어들로 이루어진 문장

           O:o1oT
T개의 윈도우에서 각 윈도우로부터 나온 13 vector sequence(.x:x1,x2,...,xt )

가능한 O 의 개수가 무한대이기 때문에 P(W | O) 를 직접 구할 수 없음

Bayesian rule을 적용하여 변환

argwmax

        P(O) : 13 * T  벡터 공간에서의 한 점의 확률

        이 확률을 모두 동일하다고 가정하면 \arg _w \max 를 찾는 문제이기 때문에 P(O) 를 생략 가능

                                            
                           

음성인식 시스템 구성에서의 핵심

        음향 모델P(O | W)

        언어 모델P(W)

        디코딩 네트워크(\arg _w \max)

           어휘(인식 가능한 단어 set)의 구현이다

 


1.2   주요 음성인식 모델

DNN-WFST  기반 음성인식 파이프라인

 

DNN-WFST

- Kaldi(음성인식 주요 tool)의 기반
- E2E
에 대응되는 기술로 서술되나,
  Frame
단위까지(출력 end HMM에서의 state) E2E

End-to-end 기반 음성인식 파이프라인

E2E (출력 end는 주로 grapheme)

- CTC
- RNN-T
- Attention
- Transformer

 

 

1.2 E2E방법의 장점 및 주요 검토 항목

장점

           SOTA(State-of-the-art)를 보임 (transformer)

           음성파일과 이에 대응되는 transcription만으로 학습

           전혀 모르는 언어에 대해서도 음성인식기 제작이 가능

단점

           외부 지식을 실시간 반영할 수 있는 방법이 없음 (: 실시간 검색어(고유명사 많음))

           대용량 텍스트 코퍼스를 음성인식기에 직접 반영할 수 있는 방법이 없음

           복잡한 구조에 파라미터가 많고, computation power를 많이 사용하며, ML 기반으로 학습이 이루어짐 (입력열과는  다른 길이를 가지는 출력열에 대한답만 가지고 있음)

           재현 실험이 되지 않는 경우가 많음 (모델 초기값에 의해 성능이 바뀔 수 있음)

 

주요검토항목

           DNN-WFST 대비 성능이 좋은가?

           재현 실험은 잘이루어 지는가?

           필요한 computation power?

           출력 단위 정의

1.2 주요 E2E 방법

End-to-end models

           Connectionist temporal classification (CTC) [Graves, 2006]

알파벳과 음성정보만으로 단일모델을 구성할수 있는, 최초로 제안된 end-to-end 음성인식모델

           RNN-transducer (RNN-T) [Graves, 2012]

CTC에 언어 정보를 학습할 수 있는RNN 기반의 모델을 추가하여 성능을 개선시킨 모델

           Attention 기반 seq2seq [Chan, 2016]

음성인식을sequence의 번역으로 해석해서attention mechanism을적용한모델

           Transformer [Vaswani, 2017]

Multi-head self-attention을 사용하여 RNN 없이 sequence 모델링을 구현한 모델

Librispeech corpus 대상 end-to-end 음성인식 모델 성능 비교

대용량 corpus 대상 end-to-end 음성인식 모델 성능

reference:서강대학교 김지환 교수님 강의

Posted by creatoryoon
,

이래저래, 공부를 너무 대충하는 것 같아 참조차 적어보기 위해 만든 블로깅

 

머신 러닝의 숲을 먼저 살펴보자면, 알고리즘까지 나열하자면 지금은 한도끝도 없이 많다.

다만, 어떤 식으로 분류가 되는지에 대해서는 원형 까지인데, 이정도는 알고있는것이 좋을 것 같다.

 

먼저 정통적인 방식은 Supervised Learning인데,

지도학습은 레이블이 있는 상태에서 학습하는 방식으로써, 학습데이터로 주어진 데이터의 피처와 레이블값을 머신러닝 알고리즘으로 학습, 모델을 생성하고, 이 모델에 피쳐를 줬을 때의 레이블 값을 예측하는 것이다.

여기에는 분류와 회귀가 있다.

 

분류는 결정트리, KNN, SVM, Navie Bayes, Neural net등의 다양한 알고리즘이 있으며 Ensemble이란 알고리즘을 결합하여 예측을 수행하는 방식으로 베깅, 부스팅, 볼팅 등이 있다.

Random forest 경우도 결정트리를 부스팅한 것으로써, Xgboost, LightGBM 또한 결정트리의 일종이라고도 볼 수 있다.

 

https://www.robotstory.co.kr/raspberry/?board_name=raspberry_bbs&mode=list&search_field=fn_user_pid&search_text=426&board_page=2&list_type=list&lang=ko_KR

결정트리

결정트리는 이해하기 쉬운 알고리즘으로써, 데이터에 있는 규칙을 학습으로 찾아내 트리 기반의 분류 규칙을 만드는 것이다. 단순하게 말하면 분기문을 만들어 구분한다고 생각하면 되겠다.

결정 트리의 경우 루트노드, 규칙이 있는 서브노드와 결정된 값이 들어있는 리프노드가 있다. 그리고 새로운 규칙이 추가될때 이에 기반한 서브트리가 생성된다.

이때, 많은 규칙이 있다는 것은 분류를 결정하는 방식이 복잡하다는 것이고, 이는 과적합, 성능저하의 원인이 된다.

결정트리의 핵심 아이디어는 불순도를 낮추는 것에 있다. 불순도란 정보의 복잡도(얼마나 균일한가)를 의미하며, 불순도를 수치화한 값에는 지니계수(Gini coefficient)와 엔트로피(Entropy)가 사용된다.

아무래도, 동일한 데이터에서도 결정트리는 여러 개가 나올 수가 있는데, 여기서 불순도를 이용해 더 효과적인 결정트리를 결정할 수 있다.

subNode에서 데이터가 분리되었을 때, 더 순도가 높은 데이터가 많이 나오게 되는 속성이 더 효과적이라고 할 수 있으며, 이때 순도가 높다는 것은 분류된 레이블 값이 동일한 것, 즉, 레이블 값이 다 같은 것을 말한다.

이때, 분류가 완료된 리프노드의 엔트로피는 0이다.

Decision Tree의 성능측정은 entropy(T)를 통해 이뤄지며 entropy(T)= -p+log(p+) -p-log(p-)이다.

이때, p+, p-는 각각 positive position(순도가 pure한 것/전체), nagative position(순도가 pure하지 않은 것/전체)를 말한다.

예를 들어 10개 데이터의 클레스를 분류한 결과, 7개는 예측이 잘 되지만 3개는 안된다면

p+, p-는 각각 [7+, 3-]이고, entropy(T)= -(7/10)log(7/10)-(3/10)log(3/10)=0.881 이다. (entropy 는 0to1 이다)

조금 더 살펴보자면, 결정트리 알고리즘에는 ID3, CART가 있는데, 이때 ID3은 엔트로피를 사용하고, CART는 지니계수를 사용한다. (이 내용 공부후 추가할 것)

 

 

 

 

랜덤 포레스트

랜덤 포레스트란 배깅을 사용하는 앙상블으로써, 배깅은 같은 알고리즘으로 여러 개의 모델을 만들어서 보팅으로 최종 결정하는 알고리즘이다.

기본적인 개념은 여러 개의 결정트리 모델이 전체 데이터를 샘플링해 개별적으로 학습을 수행 한 뒤, 모든 분류기가 보팅을 통해 예측 결정을 하는 방식이다.

이때, 보팅이란 여러개의 모델이 학습하고 예측한 결과를 보팅으로 최종 예측하는 것으로써, 하드보팅과 소프트 보팅이 있다.

하드 보팅은 일종의 다수결 원칙으로, 다수의 모델이 결정한 예측값을 최종 보팅값으로 선정하는 것이고, 소프트 보팅은 모델의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이 중 가장 확률이 높은 레이블 값을 최종 보팅 결과값으로 선정하는 것으로써, 일반적으로 소프트 보팅이 사용된다.

랜덤 포레스트의 모델별 알고리즘은 결정트리이지만, 각각의 모델이 학습하는 데이터는 전체 데이터에서 일부가 중첩되도록 샘플링된 데이터셋이다. 이렇게 여러 개의 데이터셋을 중첩되게 분리하는 것을 부트스트레핑(bootstrapping)분할 방식이라고 하며, 

 

‘Model evaluation, model selection, and algorithm selection in machine learning Part II – Bootstrapping and uncertainties, Setabstian Raschka

이렇게 부트스트레핑으로 분할된 데이터셋에 결정트리 모델을 각각 적용하는 것이 랜텀 포레스트이다.

GBM

다음으로 GBM을 살펴보면

부스팅 알고리즘이란 여러 개의 약한 학습기를 순차적으로 학습-예측하며 잘못 예측된 데이터에 가중치를 부여하여 오류를 개선하며 학습하는 것이다.

대표적으로 AdaBoost와 GradientBoost가 있다. 

 

 

KNN

KNN을 먼저 설명하자면 이건 매우 쉽다.

간단하게 가장 가까운 점 몇개를 가지고 분류하겠다는 문제.

http://dmml.asu.edu/smm

 

http://dmml.asu.edu/smm

예측하고 싶은 data에서 가장 가까운 k개의 이웃을 구하고, 거리를 measure하고, 그들의 class값을 체크한 뒤 조정해서 예측하는 것이다.

 

다음이 SVM인데, 이는 기본적으로 그룹을 분리하기 위해, 데이터들과 가장 거리가 먼 초평면을 선택하여 분리하는 방법을 말한다.

기본적인 아이디어는 어떻게 공간을 나눌 것인가에서 출발하며, 

다음 블로그를 참조했다. 

https://ratsgo.github.io/machine%20learning/2017/05/30/SVM3/

 

Kernel-SVM · ratsgo's blog

이번 글에서는 서포트 벡터 머신(SVM)의 변형인 Kernel-SVM에 대해 살펴보도록 하겠습니다. 이 글 역시 고려대 강필성 교수님과 역시 같은 대학의 김성범 교수님 강의를 정리했음을 먼저 밝힙니다. S

ratsgo.github.io

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-Support-Vector-Machine-05.-Why-does-SVM-maximize-margin

 

[머신러닝 정리] 서포트 벡터 머신(Support Vector Machine) - 05. Why does SVM maximize margin?

본 포스팅 시리즈는 다양한 머신러닝 테크닉에 대해 수학적 관점과 실용적 관점에서 정리한다.

velog.io

https://www.slideshare.net/freepsw/svm-77055058

 

내가 이해하는 SVM(왜, 어떻게를 중심으로)

Coursera Machine Learning by Andrew NG 강의를 들으면서, 궁금했던 내용을 중심으로 정리. 내가 궁금했던건, 데이터를 분류하는 Decision boundary를 만들때... - 왜 가중치(W)와 decision boundary가 직교해야 하는지

www.slideshare.net

https://jaejunyoo.blogspot.com/2018/01/support-vector-machine-1.html#mjx-eqn-eqdr

 

초짜 대학원생의 입장에서 이해하는 Support Vector Machine (1)

Machine learning and research topics explained in beginner graduate's terms. 초짜 대학원생의 쉽게 풀어 설명하는 머신러닝

jaejunyoo.blogspot.com

https://sanghyu.tistory.com/7?category=1122189

 

 

 

 

 

먼저 SVM을 설명하기 전에, 선형분류에 대해 얘기를 하는 것이 이해에 도움이 될 것 같다.

간단히 두개의 클레스를 분류하는 문제를 생각해보면, 

http://doc.mindscale.kr/km/data_mining/dm03.html

위와 같은 데이터가 주어졌을 때, 이를 분류하기 위한 선을 하나 그어보자면

아래와 같은 모양이 될 것이다.

http://doc.mindscale.kr/km/data_mining/dm03.html

이고, y=w1x1+b꼴의 식이 만들어 질 것이고, 이때, y=x+6이라면, 위의 선중 실선이 될 것이다.

여기서 식을 조금 다르게 바라보자

가로축, 세로축이 각각 x1,x2 라고  한다면, y=w1x1+w2x2+b꼴이 될 것이고, 각각을 

선형 분류는 가장 적절한 경계선이 되도록 w와 b를 결정하는 것이다.

 

이 적절함은 손실함수로 찾을 수 있다.

 

여기서 발전한 형태가 피셔의 판별분석이라 할 수 있다.

 

http://doc.mindscale.kr/km/data_mining/dm03.html

위의 그림에서 왼쪽 그림이 오른쪽 그림보다 평균간의 거리는 더 멀지만, 경계선은 오른 쪽이더 적합해 보인다.

원인은 왼쪽은 클래스의 y값이 넓지만, 오른쪽은 좁게 모여있기 때문으로, 선형판별분석은 클래스간의 차이는 크게, 클래스 내의 차이는 작게 만드는 w를 가장 좋은 w로 본다.

정리하면 아래의 식에서 J를 최대화하는 w를 찾는 것이다.

J=(m1m2)2s12+s22

mi:i,si:i

 

이런 아이디어가 선형분류라고 한다면,

SVM은 클래스를 나누는 선과 가장 가까운 점의 거리를 최대화하는 것이 아이디어다.

선형 판별을 할 때, 클래스를 나누는 선은 여러 개가 나올 수 있는데, 이중 어떤 것을 선택할 것인지에 이 아이디어가 쓰이는데, 

 

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-Support-Vector-Machine-02.-Binary-Classification

 

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-Support-Vector-Machine-02.-Binary-Classification

위의 그림에서 아래 그림이 SVM에 대해 잘 설명하고 있다. 선에서 가장 가까운 점이 Support Vectors이고, Margin이 선과 SupportVectors와의 거리를 말한다.

이 마진을 결정하는 각 클래스의 샘플이 서포트 벡터이며, 새로운 데이터가 들어왔을 때 클래스를 구분하는 기준이 된다.

이 거리가 멀수록 신뢰도가 올라가게 되고 이 거리를 최대화하는 것을 하드마진이라 한다.

다만 이 SVM의 단점이라 한다면, 실제 데이터에서 노이즈나 이상치에 대처가 어렵다는 것이다.

 

그래서 소프트 마진이라는 것이 생기게 되었는데,  

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-%EC%84%9C%ED%8F%AC%ED%8A%B8-%EB%B2%A1%ED%84%B0-%EB%A8%B8%EC%8B%A0Support-Vector-Machine-06.-Soft-margin-SVM-1

 위와 같은 그림이 현실에 가까운 데이터라 할 수 있으며, 하드마진은 이에 대응하기가 어렵다.

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-%EC%84%9C%ED%8F%AC%ED%8A%B8-%EB%B2%A1%ED%84%B0-%EB%A8%B8%EC%8B%A0Support-Vector-Machine-06.-Soft-margin-SVM-1

또한 위의 사진과 같이 선형 분류가 되지 않는 경우는...... 사실상 성능을 낼수가 없다.

따라서, 마진에 잉여(slack)를 허가해 줌으로써 개선한 것이 소프트 마진 svm이다.

훈련 데이터에 이상치나 노이즈가 있다는 점에 무게를 두고, 결정경계의 근방에서 발생할 노이즈, 이상치는 좀 틀려도 되도록 여유를 주고 넓은 마진을 가지게 하는 것이다.

https://velog.io/@shlee0125/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC-%EC%84%9C%ED%8F%AC%ED%8A%B8-%EB%B2%A1%ED%84%B0-%EB%A8%B8%EC%8B%A0Support-Vector-Machine-06.-Soft-margin-SVM-1

각 훈련 데이터 샘플 (xi,yi)마다 잉여 변수를 대응시켜, 샘흘이 마진의 폭 안으로 ξi만큼 파고드는 것을 용인해주는 것이다.

 

 

 

 

-커널트릭

 

 

 

 

eigen vector을 잘 설명해주는 그림이 있어 위키피디아에서 가져왔다.

In this  shear mapping  the red arrow changes direction, but the blue arrow does not. The blue arrow is an eigenvector of this shear mapping because it does not change direction, and since its length is unchanged, its eigenvalue is 1 _https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors
A 2×2 real and symmetric matrix representing a stretching and shearing of the plane. The eigenvectors of the matrix (red lines) are the two special directions such that every point on them will just slide on them.https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors
The transformation matrix  A  =  {\displaystyle \left[{2112}\right]}  preserves the direction of purple vectors parallel to  v λ=1  = [1 −1] T  and blue vectors parallel to  v λ=3  = [1 1] T . The red vectors are not parallel to either eigenvector, so, their directions are changed by the transformation. The lengths of the purple vectors are unchanged after the transformation (due to their eigenvalue of 1), while blue vectors are three times the length of the original (due to their eigenvalue of 3). See also:  An extended version, showing all four quadrants .https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors

 

 

 

 

 

SVM

 

 

 

 

Naive Bayes

다음으로 Naive Bayes Learning을 살펴보면, 

기본적 아이디어는 조건부 확률을 말하는 것으로 예를 들어 2개의 random x,y가 있을 때 x의 조건하에 y일 확률을 말한다.

http://dmml.asu.edu/smm

즉 어떤 x가 주어졌을 때 어떤 클래스에 속할 확률을 구해서 그중 가장 큰 확률을 주는 x가 y라고 보겠다는 것이다.

예를 들자면, 

http://dmml.asu.edu/smm

위와 같은 표가 주어진다고 하자.

8번째에서 내가 골프를 칠 것인가를 결정하자면n=1100n

http://dmml.asu.edu/smm

골프를 칠 것인가가 Yes일 떄의 확률은 sunnyYmildYhighYYP(i8)=14142447P(i8)=156P(i8) 이고,

http://dmml.asu.edu/smm

골프를 칠 것인가가 No일 떄의 확률은 

sunnyNmildNhighNNP(i8)=23132337P(i8)=463P(i8)

이 나온다.

http://dmml.asu.edu/smm

이때, N일 때가 더 크므로 골프를 치는가의 여부는 N으로 결정된다.

 

 

 

 

'IT' 카테고리의 다른 글

(작성중)Social Media Mining #1 introduction, #2 Graph Essentials  (0) 2022.07.08
낡은 nas j4105로 교체기.  (4) 2018.02.26
Posted by creatoryoon
,

APC의 BE700-kr의 정품 배터리 RBC-17의 경우

라벨을 떼어보면 다양한 제조사에서 납품함을 알 수 있다.

wp9-12shr (출처:https://www.bonobono.com/2022/07/21/apc-be700-kr-ups-battery/)
hr1234w (출처: https://comterman.tistory.com/2065)
cp1290 (출처: 직접 사용중인 것에서 확인)

특히 cp 1290의 경우->es 9-12 와 매우 동일한 datasheet를 가짐을 확인했다.(https://www.vision-batt.com/site/product_files/CP1290.pdf)

일단 내가 사용하며 오래 사용한 배터리가 cp1290의 라벨을 가지고 있음을 확인했고,

es-9-12의 데이터 sheet(https://almazroui-me.com/wp-content/uploads/2018/12/Rocket-Battery-ES-9-12-12V-9Ah-AGM-VRLA.pdf)를 확인해본 결과 설계수명이 더 길다는 점 외에 특이사항을 발견하지 못하였으므로

로케트 전지의 es9-12를 사용해볼 예정

 

 

Posted by creatoryoon
,