인공지능관련/EM

인간감정인식:박쥐소리 인식

학위논문통계 2017. 1. 18. 14:25

 

 

1. GMM

 

 

얼마전에 한겨레 과학 기사에 흥미로운 것이 올라왔네요. 박쥐 소리를 듣고 현재 박쥐의 상태를 파악하는 논문을 소개했습니다. 논문도 링크가 되어 있어 지금 읽고 있는 중입니다. 여기에 첨부할게요.

 

 

박쥐소리인식.pdf

 

 

 

그 논문을 보면 GMM-UBM을 사용했다고 합니다. GMM이 뭔지 한번 찾아 보니까 Gaussian Mixture Model 이네요. 우리가 앞에서 한 성별이 히든 변수이고, 키가 정규분포를 한다는 모형과 똑 같은 것입니다.

 

여기서는 성별 대신 박쥐의 상태, 이 논문에서는 16개 class로 구분했다고 하네요. 이쪽 용어로 16개 component가 있다는 것이죠. 이 component의 상태에 따라 박쥐 소리가 다르다는 것을 전제로 하고 나중에 반대로 이 박쥐 소리를 듣고 역으로 이 박쥐가 어떤 상태에 있는지 판단한다는 것이죠.

 

이 박쥐의 상태에 대한 예를 이 논문에서 한번 보죠. 짝짓기, 고립, 짜증, ,공격. 또 공격상태는 더 세분화해서 짝지을때, 휴식, 음식, 잠잘 때 등 4개로 나눴고요. 그래서 옆에 있는 시간별 주파수 형태를 보고 정확한 박쥐 상태를 판단한다는 것이죠.

 

 

 

 

 

2. 성별 혼합모형 설명과 다른 점

 

지난별 성별에 따른 키 혼합모형 이야기 할 때 우리가 한 것은 모수추정입니다. 어떤 사람의 키 정보, 즉 데이터를 봤을 때 이 사람이 남자인지, 여자인지 판단하는 문제는 하지 않았습니다. 그러나 이건 별 어려운 문제는 아닙니다.

 

예를 들어 성인만 대상으로 우리가 연구했다고 하죠. 키 정보 Y가 160cm라 하면 대부분 우리는 여자라고 판단할 것입니다. 키 정보 Y가 180cm이라 하면 대부분 남자라고 판단할 것이고요. 지금 박쥐 상태를 파악하는 것도 기본적으로 같은 문제입니다.

 

 

여기서 한가지 의문이 생길 수 있습니다. 현실 문제에서는 우리는 키 정보를 보고 판단을 내릴 수 밖에 없습니다. 여자일 가능성이 높다, 남자일 가능성이 높다 이렇게 판단을 내릴 수가 없습니다. 법정에서 유무죄를 판단해야 하고, 의사는 수술을 할 지 수술을 하지 않을지 판단을 해야 한다는 것이죠.

 

문제의 인식은 확률적이지만 현실에서는 우리는 항상 action, 즉 하는냐 안하느냐 하는 문제, 즉 이진법의 세계에 살고 있습니다.

 

그럼 키가 160cm일 경우 여자라고 판단하고, 키가 180cm일때는 남자라고 판단할 때 분명히 판단에서 오류가 발생합니다. 그러면 이 오류를 완전히 없앨 수 있을까요? 현실 세계에서는 절대로 불가능합니다. 우리가 할 수 있는 방법은 키 말고 남녀를 잘 구별해 줄 수 있는 새로은 관찰 변수 Z를 더 추가해서 오류의 확률을 줄일 수 밖에 없습니다.

 

 

이게 통계학에서 설명력이 높은 변수를 더 추가한다든지, 아니면 적합도를 높인다는 이야기입니다. 회귀분석에서 변수 선택메뉴을 보면 전진 선택법이 이런 이야기를 하는 것입니다. 제일 처음 변수 선택할 때 종속변수 Y를 가장 잘 설명하는(즉 Y와 가장 상관관계가 높은 변수) 변수를 독립변수로 1차로 선택하고 그 다음에서는 새 변수를 더 추가할 때 Y를 가장 잘 설명하는(두 개의 독립변수와 종속변수 Y와 상관관계가 가장 높은) 변수를 독립변수로 추가로 넣는다는 것이죠. 이린식으로 계속하는 것이죠.

 

 

그럼 여러분 생각에 애초에 성별를 잘 설명하는 독립변수를 많이 넘으면 설명력이 좋아지니까 그렇게 하는 것이 더 좋지 않는가 하는 생각을 할 수 있습니다. 그렇지 않다는 게 문제인 것이죠. 즉 절약의 법칙, 또는 오캄의 면도날 문제가 생깁니다.

 

지금 데이터 상에서는 잘 적합될 수 있지만 나중에 새로운 데이터가 들어올 때 완전 개판의 판단을 할 수 있다는 것이죠. 이런 문제를 overfitting 문제라고 합니다. 또 통계학에서는 수리적으로 다중공선성 문제가 또 생겨납니다. 변수가 적을 때는 적절한 값을 내 주는데 이런 다중공선성 문제가 생기면 컴퓨터 프로그램에서 완전히 엉뚱한 결과를 내줍니다. 이건 통계프로그램 결과에서 표준오차 부분이 심각하게 크면 다중공선성 문제가 발생했다고 판단해도 별 문제가 없습니다.

 

 

하여간 우리는 키만 가지고 판단한다고 전제를 하죠. 그럼 우리들 상식으로 키가 160이면 여자, 180이면 남자라 판단했는데 이 판단은 도대체 어디서 나왔을까요?

 

바로 이것입니다. f를 확률분포라고 하죠.

 

 

f(y=160|여자) > f(y=160|남자)

f(y=180|남자) > f(y=180|여자)

 

 

이런 식으로 한 것이죠. 여기에 베이지안 생각을 더 하면 남자의 비중, 여자의 비중 이것 더 고려할 수 있습니다.

 

 

f(y=160|여자)*여자비중 > f(y=160|남자)*남자비중

f(y=180|남자)*남자비중 > f(y=180|여자)*여자비중

 

 

이런 문제죠. 우리의 연구대상이 성인 남녀 전체로 할 때는 남녀 비중을 0.5:0.5 정도로 둘 수 있죠. 그러나 백화점의 경우 남녀 비중을 0.3:0.7로 둘 수 있고, 그러면 키가 180이라고 해도 전보다는 여자일 가능성이 더 높다는 것이죠.

 

 

물론 이 값을 구할 때 이미 이 혼합모형에서 가정된 모수를 추정해야 합니다. 즉 EM 알고리즘을 적용해 남녀 비중, 또 남자일 경우 정규분포의 평균과 표준편차, 여자일 경우 정규분포의 평균과 표준편차를 이미 구해 놓아야 한다는 것이죠.

 

 

이와 같이 데이터가 관찰되었을 때 모르는 값 모수가 나올 확률을 비교해서 모수의 값을 판단하는 것을 통계학에서 가설 검증한다고 하고, 이때 많이 쓰는 방법이 Fisher 계열인 LRT(Likelihood Ratio Test)입니다.

 

UBM(Universal Background Model)이 이 LRT 변형인 것 같습니다. 정확하게 설명된 것을 아직 찾지 못해서 더 이상 구체적으로 이야기를 못하겠네요.

 

 

왜 이론을 정확하게 알아야 하고 그 수식전개를 정확하게 알아야 하면요 이렇게 해야 현실문제에서 정확하게 구현을 할 수 있습니다. 교수나 연구자들이 논문 쓸 때는 정확한 백그라운드 이론을 알 필요가 없습니다. 이미 구현된 프로그램을 이용해 개념만 어느 정도 이해해서 그냥 이미 구현된 소프트웨어를 사용하면 됩니다.

 

그러나 예를 들어 최근 일본 자동차에서 운전자의 감정을 파악해서 여러 가지 서비스를 해주는 자동차를 개발했다고 하는데 이런 경우는 이 자동차 안에 이런 이론적, 수학적 과정을 하드웨어나 소프트웨어에서 직접 구현을 해 줘야 합니다. 그래서 기초학문 분야가 중요하고 이게 현실 문제와 의사소통이 잘되어야 합니다.

 

 

 

3. 감정 인식

 

 

최근에 인간의 감정을 인식한다는 인공지능 이야기가 많이 나오는데요. 앞에서 이야기한 인간의 감정을 인식하는 자동차는 어떻게 할까 하는 문제를 이 혼합모형을 이용해 생각해보죠.

 

앞에서 성별 혼합모형에서 히든 변수가 남, 녀 두 가지 요소를 가집니다. 박쥐의 경우 16가지 상태로 정했습니다. 그럼 간단하죠, 인간의 감정 상태를 즐거움, 우울함, 평상시, 고통스러움, 분노 이렇게 나눌 수가 있다는 것이죠. 이걸 히든 변수로 설정한다는 것이죠.

 

 

그럼 운전자가 차에 앉을 때 앞에 있는 카메라가 운전자를 찍습니다. 그럼 예를 들어 100*100 이미지가 데이터로 들어오겠죠. 물론 이 raw data을 바로 쓰지 않겠죠. 앞에서 이미지 프러세싱에 나온 기법을 이용하는 것이죠. 윤곽선 정보를 뽑아내고, 눈 근처, 입 근처의 모양에 따라 이 사람의 상태를 판단한다는 것이죠. 여기서 운전자가 항상 똑같은 자세로 찍으면 더 정확한 판단을 할 수 있겠죠.

 

 

그런데 이게 필요한가요? 그냥 리모콘으로 자기 상태를 그냥 눌러 버리면 될 건데요. 그리고 사람의 상태를 판단한다고 해서 뭔 그리 큰 서비스를 해 줄 수 있는지 의문스럽습니다.

 

분노한다고, 기쁘다고 차 속력을 팍 낼건가요? 기껏해야 카 오디오용 음악 선택 정도인데요. 아니면 드라이브 코스 소개 정도나. 이게 뭔 인공지능인지 모르겠습니다.

 

 

 

 

하여간 이 차의 경우 데이터는 이미지라는 (x,y)에 따른 이미지 intensity라는 이 차원 데이터가 들어옵니다. 그러나 소리의 경우 시간에 따른 소리의 높이라는 일차원 데이터가 들어옵니다. 여기서 많은 차이가 있죠.

 

공간이라는 이차원에서 나오는 데이터는 공간에서의 모양을 보고 우리가 인식을 합니다. 이에 반해 소리는 주식가격과 같이 일차원적인 흐름이기 때문에 이런 공간적 인지 정보가 없습니다.

 

 

여기서 서로 장단점이 있습니다. 이미지 데이터는 이차원 데이터라 우리가 판단할 때 공간적 인지를 이용할 수 있는 반면 이것을 구현하는데 어려움이 있습니다. 알파고 구현할 때 cnn 기법을 사용한 것 생각하시면 됩니다. 소리는 이게 없기 때문에 인식이 힘들 수가 있지만 그냥 시간의 흐림에 따라 소리값의 변화만 뽑아내면 됩니다.

 

 

통상 소리 인식에서는 이런 관찰 변수 Y를 뽑아낼 때 MFCC(Mel Frequency Cepstral coefficients)라는 방법을 많이 사용하는 모양입니다. 이것도 인터넷에 정보를 찾아 보고 있는데 그렇게 자세히 설명된 것을 아직 찾지 못했습니다.

 

 

기본적으로 소리에서의 관찰 데이터 Y는 시간당 주파수의 흐름을 뽑아내는 것 같습니다.

 

즉 원 데이타는 시간 흐름에 따른 음높이가 되고, 이걸 퓨리에 전환을 하면 주파수 흐름당(즉, x 축) 높이 Y는 파워 스텍트럼이 됩니다. 그러나 소리 인식에서는 관찰 변수를 시간 흐름에 따른 높이 Y는 주파수로 하는 것 같습니다. 그래서 이걸 하는 방법 중의 하나가 MFCC라고 나오고 최근에는 이걸 가장 많이 사용한다고 합니다. 이것도 Matlab에서는 모듈로 이미 구현되어 있는 모양입니다.

 

원래 아이디어는 간단한 것 같습니다. 소리를 매우 짧은 시간, 즉 1/100초 단위로 짤라내면 이 짧은 구간에서는 주파수 모양은 동질적이라 볼 수 있 수 있습니다. 즉 1초 안에서는 주파수의 흐름이 꽤 있지만 이 1초를 잘게 짜르면 이 잘게 자른 구간 안에서는 주파수의 변화가 별로 없다고 보는 것이죠. 그래서 이 짜른 구간당 대표적인 주파수를 찾아내고 이 구간 흐름에 따른 대표적인 주파수 변화를 관찰변수 Y로 하는 모양인 것 같습니다.

 

 

하여간 좀 더 구체적인 방법론은 관련 논문이나 책을 더 찾아봐서 쓰겠습니다.

박쥐소리인식.pdf
1.14MB

'인공지능관련 > EM' 카테고리의 다른 글

HMM계산1  (0) 2017.02.13
음성인식 소개1  (0) 2017.02.06
HMM  (0) 2016.12.28
혼합모형 EM simulation  (0) 2016.12.14
PET, 뇌촬영, EM2  (0) 2016.12.12