Chapter 2: /출력 end 복잡도 분석

Table of contents

2.1음성 신호 저장 방법 및 시스템 입력

2.2음성 출력 단위 결정

2.1 음성 신호 저장 방법 및 시스템 입력

§  음성 신호의 저장 방법 (sampling rate: 16K, PCM)

§  음성 신호 저장 시 필요한 parameter (PCM, Pulse-Code Modulation 기준)

           Sampling rate
단위 시간당(초당) sampling의 횟수
Nyquist theorem
   Sampling rate의 절반의 해당하는 주파수 대역까지 복원 가능함
Sampling rate는 음질을 결정한다.
   음악 저장에 많이 사용되는 sampling rate은 초당 44.1k(cd)
     
사람의 가청 주파수 대역은 일반적으로 20Hz~20kHz로 알려져 있음
   전화의 sampling rate : 초당 8k
   현재 음성 인식에 많이 사용 되는 sampling rate는 초당 16k

           Sample byte
Sample 2byte 사용 (216 = 65,536 )

§  음성 신호의 저장 방법(예제)

           가수가 10곡을 수록한 앨범을 발매했다. 이를 CD에 담았을 때, 전체 CD burning된 부분은 CD 전체 면적의 몇 %인가?
한 곡의 길이는 4분으로 가정
CD는 총 700MB를 저장한다고 가정
Sampling rate: 초당 44,100
Sample 2byte 사용
Stereo로 녹음되었기 때문에 채널은 2

44,100(samples/sec) * 2(bytes) * 240(secs) * 10() * 2(channels) = 423,360,000
  : 423.36/700 MB, 60.48%

 

§   음성인터페이스의 가능한 입력 개수 분석(계속)

           정량적 분석
가정 : 입력 길이 1, sampling rate 44.1k, sample 2B사용
저장에 1 * 44100 * 2 = 88,200B 필요
가능한 입력의 개수: 2882008
입력 길이의 제한이 없으므로 가능한 입력의 개수: 무한대

 

§  용량을 최대한 줄이면서, 음성 인식에 유용한 정보는 최대한 유지하는 feature추출이 필요

           전체 음성을 20ms단위의 window로 나누고, window별로 13 MFCC feature를 추출하여 사용함

 

§  window별로 feature를 추출하는가?

           Feature추출이 가능 하려면, modeling과 분석이 가능해야 함

           현재까지의 발화를 바탕으로 미래의 발화를 예측할 수 있는가?
화자가 발화를 중지할 수 도 있고, 발화의 내용을 갑자기 바꿀 수 있음 따라서, 예측 가능하지 않음
예측 가능하지 않다면, modeling과 분석이 불가능함

           사람의 성대를 하나의 발성 기관으로 본다면, 발성 기관의 물리적 한계(제약)로 인하여 어떠한 짧은 시간에 대하여 미래의 발화를 예측할 수 있음
음성은 quasi-stationary함 (짧은 구간에서만)
다양한 실험을 바탕으로 window의 길이는 20ms로 도출됨

 

 

§  음성 신호를 short integer type 2차원 array로 저장함

 

           하나의 window에는 320개의 sample이 들어감

           2byte(short integer)형식의 2차원 array로 저장
C 언어에서는 short[T][320]의 형태로 표현됨

§  MFCC feature 추출 과정

 

§  Fast Fourier Transform(FFT)

           기본 가정:
모든 주기적인 신호는 정현파(ex> sin, cos)의 합으로 나타낼 수 있다
모든 신호를 𝛼 sin 𝛽 𝜋의 합의 형태로 표현 가능

§  Time domain data frequency domain data로 변형

Frequency domain으로 나타내어진 결과를 spectrum이라고 함

 

§  예제

           음성 신호에서 fundamental frequency를 정의하려면?
일반적으로 사용하는 16kHz sampling rate의 경우, 8kHz까지 복원 가능함
FFT 분석을 위해 8kHz를 일정 크기로 분리 (fft size: $2^10$ )
FFT 분석에는 복소수가 사용되는데, 실수와 허수의 벡터 성분이 대칭을 이루기 때문에
  
중복되는 값을 버리고 실수 값만을 사용
(fft size/2 = $2^9$ )
fundamental frequency : 8000/512 = 15.625Hz
음성 신호에서의 frequency 15.625의 배수로 나타냄

§  예제

           3125Hz, 6250Hz frequency를 가진 sine wave를 중첩 시킨 pcm

 

           Time frequency domain을 각 축으로 표현하고, amplitude를 색으로 표현한 것을 spectrogram이라 함

           FFT를 통해 음성 신호의 특징을 표현할 수 있음

§  음소별로 spectrum의 모양이 다름

 

§  Mel-filterbank & Log

           x(n) = v(n)*e(n) 을 음성이라고 가정
v(n) = 구강구조
e(n) = 성대에서 울리는 소리

           v(n)은 음성에 대한 정보
무슨 말을 했는지에 대한 정보

           e(n)은 화자에 대한 정보
어떤 사람이 말을 했는지에 대한 정보

           x(n) = v(n)*e(n) 이 마이크를 통해 입력됨
Time domain

          FFT를 통해 frequency domain으로 변환

convolution이 곱셈으로 변환

           X(n)에서 화자 정보인 e(n)을 제거하기 위해 log를 씌워 덧셈으로 변환
Log(X(n)) = Log(V(n)) + Log(E(n))

http://www.lionsvoiceclinic.umn.edu/page2.htm#anatomy101

§  Discrete Cosine Transform(DCT)

           적은 차원의 데이터로 envelop을 구할 때 사용됨

           Discrete Cosine Transform(DCT) 과정을 통해 음성 인식에 있어 필요한 정보만을 담은 13 vector를 생성

 

§  MFCC feature 추출 과정

2.2음성 출력 단위 결정

§  각 단어들은 컴퓨터 내부에서 어휘에 대한 index로 표현

           어휘(Vocabulary): 인식 가능한 단어들의 집합

           : 어휘의 크기가 10만이고, 단어들은 어절단위로 구분 되었으며, 어휘 내 단어들을 가나다순으로 정렬했 을 때, 단어들이 아래의 순서의 단어로 어휘 내 위치해 있다고 가정한다.
가자’: 12,844번째 단어
내일’: 24,882번째 단어
세시에’: 35,493번째 단어
오후’: 69,864번째 단어
학교’: 95,867번째 단어

           ‘내일/오후/세시에/학교/가자는 아래와 같이 index의 열로 표현된다.
24,882/69,864/35,493/95,867/12,844

§  한국어 문장 예제: (형태소 단위로 시퀀스를 구성)

           올 여름 평년보다 덥고 강수량 지역 차 크다
<s>//여름/평년/보다///강수량/지역////</s>
w0/w1/w2/w3/w4/w5/w6/w7/w8/w9/w10/w11/</s>

§  영어 문장 예제: (단어 단위로 시퀀스를 구성)

           It is hotter than usual this summer, and the regional difference of precipitation is big
<s>/It/is/hotter/than/usual/this/summer,/and/the/regional/difference/of/precipitation/is/big/</s> (<s>와 </s>는 각각 start, end를 나타내는 정의)
w0/w1/w2/w3/w4/w5/w6/w7/w8/w9/w10/w11/w12/w13/w14/w15/w16



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

Posted by creatoryoon
,

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

Table of contents

1.1 음성인식 문제 정의

1.2 음성인식 연구 동향

1.1 음성인식 이란?

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

 

v                  

      $W=\left\{w_1, w_2, \ldots, w_U\right\}$ : U개의 단어 시퀀스

       $X=\left\{x_1, x_2, \ldots, x_r\right\}$ : 음성 시퀀스

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

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

  음성인식문제는

   $x_1 \cdots x_r$ (Continuous vector space에서의 13차 벡터 𝑇개의 시퀀스)에서
     $w_1, \cdots, w_U$(𝑉개의 서로 다른 값을 가지는 discrete symbol𝑈의 시퀀스)로의 번역 문제로 재정의 할 수 있다

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

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

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

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

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

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

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

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

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

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

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

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

1.1 DNN-WFST에서의 문제 정의

기호 설명

          $W: w_1 \cdots w_N$
- N개의 단어들로 이루어진 문장

           $O: o_1 \cdots o_T$
T개의 윈도우에서 각 윈도우로부터 나온 13 vector sequence(.$ x: x_1, x_2, ..., x_t$ )

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

Bayesian rule을 적용하여 변환

$$
\arg _w \max P(W \mid O)=\arg _w \max \frac{P(O \mid W) P(W)}{P(O)}
$$

        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)분할 방식이라고 하며, 

 

&lsquo;Model evaluation, model selection, and algorithm selection in machine learning Part II &ndash; Bootstrapping and uncertainties,&nbsp;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=w_{1}x_{1}+b$$꼴의 식이 만들어 질 것이고, 이때, $$y=-x+6$$이라면, 위의 선중 실선이 될 것이다.

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

가로축, 세로축이 각각 $$x_{1},x_{2}$$ 라고  한다면, $$y=w_{1}x_{1}+w_{2}x_{2}+b$$꼴이 될 것이고, 각각을 

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

 

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

 

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

 

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

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

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

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

$$J=\frac{(m_{1}-m_{2})^{2}}{s_{1}^{2}+s_{2}^{2}}$$

$$m_{i}:i번째 클래스의 평균, s_{i}: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

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

 

 

 

 

-커널트릭

 

 

 

 

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

In this&nbsp; shear mapping &nbsp;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&times;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&nbsp; A &nbsp;=&nbsp; {\displaystyle \left[{\begin{smallmatrix}2&1\\1&2\end{smallmatrix}}\right]} &nbsp;preserves the direction of purple vectors parallel to&nbsp; v &lambda;=1 &nbsp;= [1 &minus;1] T &nbsp;and blue vectors parallel to&nbsp; v &lambda;=3 &nbsp;= [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:&nbsp; 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번째에서 내가 골프를 칠 것인가를 결정하자면\[\sum_{n=1}^{100} {n}\]

http://dmml.asu.edu/smm

골프를 칠 것인가가 Yes일 떄의 확률은 $$\frac{sunny}{Y일때}\frac{mild}{Y일때}\frac{high}{Y일때}\frac{\frac{Y}{전체}}{P(i_{8})}=\frac{1}{4}\frac{1}{4}\frac{2}{4}\frac{\frac{4}{7}}{P(i_{8})}=\frac{1}{56P(i_{8})}$$ 이고,

http://dmml.asu.edu/smm

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

$$\frac{sunny}{N일때}\frac{mild}{N일때}\frac{high}{N일때}\frac{\frac{N}{전체}}{P(i_{8})}=\frac{2}{3}\frac{1}{3}\frac{2}{3}\frac{\frac{3}{7}}{P(i_{8})}=\frac{4}{63P(i_{8})}$$

이 나온다.

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
,