신경망을이용한멜로디패턴인식 Melody Pattern Recognition using Artificial Neural Networks 서울대학교공과대학컴퓨터공학부 97419-012 김석환 apex@apex.pe.kr 요약 지금까지컴퓨터를이용한문서검색에는많은연구가있어왔다. 우리가이용하는인터넷검색엔진은이러한문서정보검색을기반으로하는하나의시스템이라고할수있다. 그러나소리나영상에관하여사용자친화적 (user-friendly) 인정보저장및검색에관해서는아직실용적인연구가미흡한실정이다. 본연구는음악곡에서의멜로디패턴을이용한저장및검색방법을통해정보처리의한방법을모색한다. 이를구현하기위해멜로디정보를표현하도록사인파를생성하였으며, 이를 ADC(Analog to Digital Convert) 및 FFT(Fast Fourier Transform) 를통해컴퓨터데이터로변환한후평균율에따라음높이를계산하여멜로디패턴데이터를만들었으며, 패턴학습및분류, 검색에신경망알고리즘을사용하였다. 실험결과제한된규모의데이터집단에대해신경망을이용한패턴의기억학습및검색은어느정도좋은결과를보여주었으나주관적분류에서는다소좋은결과를보이지못하였다. 추후더욱효율을높이기위한신경망구조의연구및음성처리와다른검색방식과의협력이필요할것이다. 1
Ⅰ. 서론 1.1 연구목적인류가지금까지쌓아온정보의양은방대하며그분야와종류또한매우다양하다. 때문에이를개인이모두익히는것은불가능하며, 학습한정보라도시간이지나면서일부분잊어버리게된다. 따라서핵심정보만을기억하였다가필요에따라목적과용도에맞는정보를찾는방법을모색하지않을수없다. 그러기위해서는이들자료들을분류및정리, 그리고처리할필요가있다. 지금까지정보의저장및표현수단으로사용되던필기구, 종이, 물감, 악기등의도구가컴퓨터라는도구안에서구현이가능할정도로전자기술이발전되었다. 따라서기존의정보가컴퓨터의처리범주로들어오게됨에따라컴퓨터가다루어야할정보의양이커지게되었고, 이들을정리하고분류해야할필요성이생기게되었다. 현재정보의주저장및표현수단으로서문서에대한검색은상당히많은연구가이루어져있다. 이는문서의특성상문자라는이산적 (discrete) 언어에의해순차적 (sequential) 으로표현되므로컴퓨터가쉽게처리할수있기때문이다. 그러나다른분야, 예를들면영상과음향에대한검색은비교적다루기가어려운데, 이들정보는병렬적 (parallel) 이며연속적 (continuous) 인특징을가지고있기때문이다. 따라서이를인식하고검색하는데에는컴퓨터가처리할수있는새로운방법이필요하다. 이중음향은청각과관련되어인간이친숙하게의사소통할수있는분야라고할수있다. 우리의주위에서듣게되는모든소리가음향이며이러한음향정보중에서원하는것을저장하고검색할수있는방법이필요할것이다. 이논문에서는컴퓨터내에서음향의한분야인음악을어떤방식으로저장하고, 검색할것인지에대하여살펴보기로한다. 1.2 연구내용음악이란소리를이용하여인간의감정이나생각을표현하는수단이다. 음악에서소리는음이라는단위로표현할수있으며, 이음들이시간적순서에따라배열되어하나의곡이완성된다고생각할수있다. 이들음은악보의형식에서음표로기호화될수있으며, 지금까지작곡된수많은음악들이이렇게이루어진것이다. 따라서어떤음악을컴퓨터가처리할수있는데이터로변환하려면음악소리로부터그음을추출하는것이하나의방법이될수있다. 다시말해, 특정소리음으로부터그음을나타내는기호로변 2
환시켜음표로표현할필요성이있다. 음표를이용해높이, 길이, 강약등을표시할수있는데, 여기서는음표들을순서대로배열한표현형태인멜로디 (melody: 선율 ) 를다룬다. 이를위해음악소리로부터음표값을추출하려면다음과같은기술이필요하다. 우선연속적인소리신호를이산적인데이터값으로변환시키는 ADC(Analog to Digital Convert) 과정이필요하다. 이렇게변환된신호는시간을축으로진행되는파동의형태를띄게되는데, 이를다시주파수를축으로표현되는스펙트럼 (spectrum) 의형태로변환시켜입력신호의주파수를확인해야한다. 여기서는 FFT(Fast Fourier Transform) 방식을사용한다. 마지막으로이주파수로부터우리가인식하는음계의영역으로표현하기위해평균율지식 (Equal Temperament) 을이용하게된다. 이과정을거쳐변환된멜로디데이터는컴퓨터가처리할수있는이산적이고순차적인특징을띄게된다. 따라서음악소리를기호화하여저장할수있고이를검색할수있는선행조건을만족한다. 인간은음악의모든소리를듣지않고도멜로디만으로곡을구분할수있는능력을지니고있기때문에이러한멜로디의일정부분인멜로디패턴을이용하여곡을검색하는방법을생각할수있다. 멜로디패턴을검색하는방법에는크게두가지가있을수있는데, 그첫번째는문서검색방법과마찬가지로찾고자하는멜로디패턴과저장되어있는멜로디패턴이일치하는지를평가하는것이다. 또다른방법으로패턴의값들을입력값으로하는신경망을구성하여미리학습시킨후찾고자하는입력패턴을넣어주면학습된패턴의번호를출력하도록하는것이다. 전자의경우사전학습과정이필요치않으며방대한데이터를저장하고검색할수있는장점을가지는반면, 일부에러값을가지는패턴에대하여원하는결과값을출력하는데어려움이있다. 후자의방법은사전학습시간이필요하며, 비교적입력데이터의수에제한을받는문제가있지만, 병렬적연산으로인해검색속도가빠르고에러값이포함된경우에대해서도원하는결과값을낼수있는능력이있다는장점을가진다. 이번논문에서는신경망을이용한멜로디패턴의인식을다루는것으로, 멜로디패턴의학습과표현에관한연구를진행한다. 1.3 연구범위 크게두가지주제에대해진행한다. 하나는여러가지멜로디패턴을신경망학습을 3
통해저장한후검색값을넣었을때원하는패턴번호를출력시키는방법으로, 은닉층의뉴런수와출력층의뉴런수에따른기억능력과, 에러를포함하는검색값에대해원하는결과값을출력할수있는지를알아보는것이다. 다른하나는신경망이실제인간과같이감정에대한인식을알아보는것으로, 멜로디패턴을즐거운것과슬픈것두가지로분류학습시킨후, 테스트곡들에대한인식률을평가하는것이다. 1.4 논문의구성본논문은멜로디패턴의생성과학습및검색에관련하여기존의여러가지기술의적용과신경망의사용에중점을두어서완성되었으며, 다음과같이구성되었다. 2절에서는관련연구로서멜로디패턴의생성에필요한여러가지지식및기술에대하여살펴본다. 3절에서는이번연구에사용할신경망에대하여살펴본다. 4절에서는생성멜로디패턴을가지고신경망에실제학습시켜원하는결과를보이는가에대한실험을행한다. 5절에서는논문의결론과향후과제에대한내용을다루는것으로마무리한다. Ⅱ. 관련연구 2.1 멜로디 (melody: 선율 ) 멜로디란서로다른음높이 (pitch) 들의시간적인연속이며연속선으로인식된다. 선율은수평구조로서. 한음에서다른음으로, 그리고또다른음으로의진행구조로이루어진다 [1]. 그러므로선율을데이터구조화시키려면음높이와시간을묶어하나의원소화가될수있는음 (note) 에대해알아볼필요가있다. 음은음파에서부터추출된특징값을가진데이터구조 (structure) 로볼수있다. 따라서우선음파에대한이해가필요하다. 음파 (sound wave) 라는것은물리적으로고체, 액체, 기체등을매질로하여진행되는종파 (longitudinal wave) 이다 [2]. 이러한음파는특정지점에서시간에관한압력의변화로표현할수있는데, < 그림1> 과같이시각적으로표현된다. 4
< 그림 1. 음파의모양 > 음파는그림에서보듯진폭 (amplitude), 길이 (length) 라는주요특징을가진다. 이는음의높이 (pitch) 와길이 (duration) 에대응될수있도록처리해주어야한다. 음의높이는다른말로주파수 (frequency) 라고부를수있으며이는식 (2.1.1) 을사용하여얻을수있다. F 1 = F: frequency T: period (2.1.1) T 우리가약속한라 (A4) 음은 440Hz 의주파수값으로약속되어있다. 음의길이에대해서는음파의길이값을그대로채용하는데무리가있으며, 실제악보에서표기하는음의길이역시곡전체의빠르기에좌우되기때문에상대적인값을가지는것이좋을것으로판단한다. 멜로디패턴내에서각음들사이의상대적인음파의길이 (length) 비율로값을표현하는것이하나의방법이될수있을것이다. 2.2 음계 (Musical Scale) 음계라는것은음 (note) 들이연속적으로높아지거나또는낮아지는순서로정렬한것을뜻한다. 대부분의작곡은음계를기반으로이루어지는데음의구성개수에따라 5음 (pentatonic), 12음 (chromatic), 7음 (maor & minor diatonic, Dorian & Lydian modes 등 ) 정도가가장일반적으로사용된다. 서양음악에서는한옥타브를반음계 (semitone) 라고부르는 12개의단계로나눈다. 음계에서음들사이의높이값을어떻게책정하느냐에따라순정율 (Just scale), 피타고리 5
안음계 (Pythagorean scale), 평균율 (equal temperament) 세가지가있다 [3]. 순정율은각각의음들사이에일정한값의주파수비율을적용시키고있다. < 표1. 두음사이의주파수비례에따른간격 > 2:1 옥타브 3:2 완전 5도 4:3 완전 4도 5:3 장 6도 5:4 장 3도 8:5 단 6도 6:5 단 3도 이를적용하여도 ~ 시까지의음들의주파수비율은다음과같다. < 표 2. 순정율에서음들간의주파수비율 > 도레미파솔라시도 1 9/8 5/4 4/3 3/2 5/3 15/8 2 피타고리안음계는도음을기준으로하여위쪽으로완전 5 도씩또는아래쪽으로완전 4 도씩을증감하면서두음사이의비율을적용시켜전체적인음의비율을얻고있다. < 표 3. 피타고리안음계에서음들간의주파수비율 > 도레미파솔라시도 1 9/8 81/64 4/3 3/2 27/16 243/128 2 평균율은옥타브내의 12 반음계에대하여인접한두음사이가모두동일한비율을가지는음계이다. 한옥타브사이가 2배만큼의주파수차이가나며, 그사이에는동일한비율이적용되도록하기위해반음계사이에 12 2 배만큼차이가나도록하고있다. 따라서반음계사이는 1:1.05946 의비율값을가진다. 평균율은두음사이의소리가가장듣기좋은비율로이루어진것은아니지만, 음들 6
간의불균형을줄이며실제여러악기들을사용하는협주곡에서서로간의음계를조율할 수있는장점이있어가장널리사용된다고할수있다. 2.3 ADC (Analog to Digital Convert) A/D converter 는연속신호 (continuous signal) 를이산신호 (discrete signal) 로바꾸는장치이 다. 이는아날로그입력값 x 를 B bit 값으로양자화 (quantize) 시키는것이다 [4]. < 그림 2. A/D converter 구조도 > 이를더욱세분화하면 C/D(Continuous-to-Discrete) 부분, Quantize 부분, Coder 부분으로나뉜다. C/D 부분은 sample and hold 부분으로도불리는데주기적으로입력값을검사하여그때포착한값을유지하도록하는부분이다. 이렇게얻은값을 B bit 의이진값으로표현할수있는양자화과정을거치게된다. 마지막으로이값을 offset binary 또는 2 s complement 방식으로수치화한다 [5]. 식 (2.3.1) 은샘플링을통한 C/D 변환과정을나타낸것이다. n= x ( t) = xa( nt ) ( t nt ) 0 δ (2.3.1) 2.4 DFT(Discrete Fourier Transform)/FFT (Fast Fourier Transform) DFT 는입력신호의주파수분포 (spectrum) 분석을행할수있는기법으로, 특정주파수구간내에서균일한간격으로설정된주파수에서의값을구할수있다. 이는복소수의형태로표현되며이를절대값으로변환하면해당주파수에서의크기를알수있다. 7
N-point DFT 라는것은 N 개의주파수에대해각각 DTFT(Discrete Time Fourier Transform) 처리를해주는것으로이해할수있으며, 식 (2.4.1) 과같다 [6]. X ( L 1 ωkn ω k) = x( n) e 2πκ, =, k = 0,1,..., N 1 n= 0 N ωκ (2.4.1) FFT 는 DFT를응용한것으로샘플들이규모 (dimension) 가커짐에따라증가하는처리속도를개선한방법이다. 전형적인 FFT 알고리즘은다음세가지의과정을따른다 [7]. 1) N-차원입력을 N 개의 1-차원신호로나눈다. 2) N 개의신호에대하여 1-point DFT를수행한다. 3) N 개의 1-point DFT 값을하나의 N-point DFT 값으로합친 (merging) 다. N 개의샘플데이터를 N/2 개로나누는과정은다음의공식을따른다. N 1 X ( k) = W n= 0 kn N x( n) k X ( k) = G( k) + W H ( k) N N (2.4.2) (2.4.3) / 2 1 kn G( k) = WN / 2g( n), g( n) = x(2n) n= 0 (2.4.4) N / 2 1 ( ) = H k W n= 0 k 2kπ / N W N = e, kn N / 2h( n), h( n) = x(2n + 1) (2.4.5) k = 1,2,... N 1, n = 1,2,..., N 1 기본적으로식 (2.4.2) 와같이표시되는 N-point DFT 방식을식 (2.4.3) 의형태로이분하는것으로, 이렇게나뉘어진각각에대하여다시이분하는식으로여러번반복하게되면최종적으로 N 개의 1-point DFT 식으로표현할수있게된다. 이를 DFT 처리한후이들을다시인접한두단위씩으로묶어서 (merging) 최종적으로 N-point DFT 와같은결과를얻게된다. Ⅲ. 핵심연구내용 3.1 문제점및해결전략 이번연구에서는국내외동요및대중가요에서 100 개를선택하여멜로디패턴을만들었 8
다. 멜로디패턴의길이는두소절정도인 12개의음표값으로구성하였는데, 패턴의길이가너무길면검색의실용성이떨어지고길이가너무짧으면신경망학습이어렵기때문이다. 멜로디의경우각음들이높이와길이를가지는데, 이번연구에서는음의높이만을데이터화하여표현하였다. 음의길이에대한수치화방법은앞에서설명한바와같이음들간의길이비율값으로책정할수도있으나다른패턴들간의빠르기 (tempo) 등을고려해야하고대부분의곡들이음들사이에공백이존재하는문제가있다고판단하여이번연구에서는포함시키지않았다. 실제학습시멜로디패턴을첫번째음에대한차이를계산하여첫번째값을뺀나머지 11개의차이값을데이터로사용하였다. 이는실제절대음감을가진사람이매우드물고따라서대부분의사람은처음음에대해상대적인높이값을가진패턴을기억하고있기때문에, 절대값이아닌상대값을저장하는것이검색에있어신뢰성있는결과를얻을수있는방법이되기때문이다. 검색방법으로는문서검색과같은값비교방식도고려해볼수있으나, 오류값을가지는패턴에대하여처리방법을생각해보아야하는문제가생긴다. 이번연구에서는에러에어느정도신뢰성을가지고있다고평가받는신경망을사용하여학습과검색및인식에관해알아보기로한다. 3.2 멜로디패턴데이터본논문연구를위해직접만든데이터로그생성과정은다음과같다. 1) 생성시킬멜로디패턴을선택한다. 곡중연속된 12개의음을선정한다. 2) 선정된멜로디패턴에해당하는음에맞는 sine wave 를생성한다. 3) Sine wave 를 8kHz로 A/D Converting 한다. 4) 1024-point FFT 변환을통해주파수스펙트럼을구한다. 5) 스펙트럼을보고가장값이큰주파수의 index를구한다. 6) 그 index가가리키는주파수에해당하는음높이를평균율을적용하여찾는다. 7) 1)~6) 의과정을 12개의음에대하여반복하여하나의패턴데이터를완성한다. < 표 4> 참고 8) 첫번째음을기준으로해서다음음들이가지는차이값을계산한 11개의데이터를구성한다. < 표5> 참고 9
< 표 4. 멜로디패턴 1 > < 표 5. 멜로디패턴 2 > 1] 48 55 56 53 55 56 55 51 51 48 48 44 2] 51 54 54 54 56 53 49 53 53 51 51 54 3] 51 55 51 53 53 55 53 51 51 51 51 51 4] 49 51 53 54 46 46 53 53 51 49 46 54 5] 48 46 44 44 44 46 48 49 51 53 55 56 1] 7 8 5 7 8 7 3 3 0 0-4 2] 3 3 3 5 2-2 2 2 0 0 3 3] 4 0 2 2 4 2 0 0 0 0 0 4] 2 4 5-3 -3 4 4 2 0-3 5 5] -2-4 -4-4 -2 0 1 3 5 7 8 3.3 인공신경망 (Artificial Neural Networks) 인공신경망이란인간이나동물의뇌의구조를모방한계산모델이다 [8]. 실제생명체의뇌는단순한일을하는개개의뉴런들로구성되는데, 이들은천문학적인수를이루어망을형성하고상호작용하는분산병렬방식의처리과정을통해컴퓨터가할수없는고차원적인문제해결을가능케한다. 신경망모델은각뉴런의기능, 망의구조, 데이터에따른적응알고리즘에의해구분된다. 모든신경망은기본적으로 < 그림3> 과같이하나의뉴런에서시작하며이를변형하거나응용하여만들어진다. Bias b k x 1 w k1 활성함수 입력 신호 x 2 w k2 v k Φ(.) 출력 y k 입력합 x m wkm < 그림 3. 인공뉴런의구조 > 10
그림에서 x 값은입력신호들이며, 식 (3.2.1) 에서와같이 Σ 기호부분에서 x 값과각각의 weight값인 w를곱한전체합을더하게된다. 그리고선택적으로 bias 값을받아들이며, 식 (3.2.2) 에서처럼활성함수 (Activation Function) 에서처리를통과하여비로소출력값 y 로나가게된다. 활성함수로는 threshold, piecewise-linear, sigmoid 등이있다 [9]. k m u = w = 1 k x (3.3.1) y = ϕ u + b ) (3.3.2) k k ( k k v = u + b (3.3.3) k k 일반적으로널리사용되는것으로다층퍼셉트론 (MLP: Multi Layer Perceptron) 이있다. 입력층은닉층 Σ Σ 출력층 Σ Σ Σ weight < 그림 4. 다층퍼셉트론 > 다층퍼셉트론은비선형활성함수를가지고있고, 은닉층으로불리는중간층을가지며, 각층의뉴런들은인접한층의다른모든뉴런들과상호연결되어있다는특징을지닌다. e ( n) = d ( n) y ( n) (3.3.4) N 1 2 1 E ( n) = e ( n), Eav = E( n) 2 N = L n= 1 (3.3.5) 학습은출력층의에러값이최소가되는방향으로이루어진다 [10]. 식 (3.3.4) 는 번째출 력뉴런에서의에러값 e 를구하는것으로출력값 y 와학습값 d 사이의오차값을사 11
용한다. 그리고, 식 (3.3.5) 는출력층의모든뉴런에대한에러값을더하여 2로나눈후, 전체학습데이터패턴에대한평균에러값을구하는과정이다. 실제학습은다음의과정을거친다. 먼저입력층의뉴런은입력신호값에가중치를곱한후은닉층으로보낸다. 은닉층의뉴런은입력층의뉴런들로부터받은값들을모두더한후비선형활성함수처리를하고다시가중치를곱하여출력층으로보낸다. 출력층의뉴런에서는은닉층의뉴런들로부터받은값들을모두더하여다시활성함수처리를하여결과를내보내게된다. 이렇게이전층에서다음층으로값을전달하는방식을순차방식 (feed-forward) 이라고한다. 이들출력층에서나오는결과값들과실제우리가값들을비교하여그오차값을계산한후, 신경망의 weight를갱신해주어야하는데, 출력층에서입력층까지반대방향으로갱신작업이이루어진다고하여오류역전파방식 (error-back propagation) 이라한다. w ( l) i ( l) ( l) ( l 1) [ w ( n 1) ] + ( n) y ( n) ( l) ( n + 1) = w ( n) + α ηδ (3.3.6) i i ( L) ( L) e ( n) ϕ ( v ( n)) ( l) δ = ( n) ( L) ( l+ 1) ( l+ 1) ϕ ( v ( n)) δ k ( n) wk ( n) (3.3.7) k = 1 ϕ ( v ( n)), a > 0 & < v ( n < 1+ exp( av ( n)) ) (3.3.8) [ y ( )] ( v ( n)) = ay ( n) 1 n ϕ (3.3.9) 각층의오류역전파를통한가중치 (weight) 갱신은식 (3.3.6) 같이이전층의 i번째뉴런과현재층 l( 중간층 ) 또는 L( 출력층 ) 의 번째뉴런에대한계산으로이루어지며, 이렇게나온값으로식 (3.3.7) 를이용하여에러값 δ를계산하게된다. δ값을구하기위해서는활성함수가미분가능해야하는데, Logistic function 또는 Hyperbolic tangent function 등이사용된다. 식 (3.3.8) 과식 (3.3.9) 는전자에해당하는시그모이드함수 (sigmoid function) 의원형식과미분식을보여주고있다. 실제학습에있어서크게순차적 (sequential) 인방법과일괄적 (batch) 인방법이있다. 순차적인방법은개개의입력값들에대한에러값을계산하여바로가중치를갱신하는방식으로구현이간편하다는점과방대하고복잡한패턴을학습하는데상대적으로신속한장점이있다. 반면일괄적인방법은모든입력패턴의값을처리한후마지막에한번에러값을통한갱신을해주는방식으로비교적적은양의데이터를빠르게처리할수있는장점이있다. 식 (3.3.5) 는순차학습방법의에러계산식이며, 식 (3.310) 은일괄학습방법 i 12
의에러계산식이다. E av = 1 2N N n= 1 = C e ( n) 2 (3.3.10) 그외, 패턴을효율적으로학습하기위해서입력데이터를정규화 (Normalize) 시키는방법도사용되며, 학습시에러의수렴속도를빠르게하기위하여모멘텀항의추가, 학습계수최적화, 선택적재학습방법등이동원된다 [11]. 이번연구에서사용한구체적인신경망알고리즘의순서는다음과같다. 1) 네트워크의상태를결정하는연결강도 w 는 random(-0.5,0.5), offset 은 random(- 0.05,0.05) 로초기화. 2) 훈련패턴값을정규화하여읽음. 3) 훈련패턴값을입력뉴런에넣어서출력되는값 o, 입력뉴런과은닉뉴런사이의연결강도 w와은닉뉴런의 offset 을이용하여은닉뉴런의입력 net을구한다. 다음으로 net과시그모이드함수 f를이용하여은닉뉴런의출력 o 를구한다. net = w o + θ, o = f net ) p i i pi p ( p 4) 은닉뉴런의출력 o, 은닉뉴런과출력뉴런사이의연결강도 w와출력뉴런 offset을이용하여출력뉴런의입력 net 을구한다. 다음 net와시그모이드함수 f를이용하여출력뉴런의출력 o를구한다. net = w o + θ, o = f net ) pk k p k pk k ( pk 5) 훈련세트의목표출력 t와실제출력 o와의차로부터출력뉴런에연결된연결강도와출력뉴런의 offset에대한오차 d를구한다. δ pk = ( t pk o pk ) o pk (1 o pk ) 6) 오차 d와함께은닉뉴런과출력뉴런간의연결강도 w와은닉뉴런의출력 net으로부터은닉뉴런에연결된연결강도와은닉뉴런의 offset에대한오차 d를구한다. δ p = δ w o (1 o ) k pk k p p 7) 5 단계에서구한출력뉴런에서의오차 d, 은닉뉴런의출력 o, 상수알파와의곱을더 하여은닉뉴런과출력뉴런에연결된연결강도 w 를수정한다. 또오차 d 와정수베타 와의곱을더하여출력뉴런의 offset 을수정한다. 13
w k +α δ = wk pko p, k = k + pk θ θ β δ 8) 은닉뉴런의오차 d, 입력뉴런의 o, 상수알파와의곱을더하여입력뉴런과은닉뉴런에연결된연결강도 w를수정한다. 또오차 d와상수베타의곱을더하여은닉뉴런의 offset을수정한다. w +α δ i = w i po pi, = + p θ θ β 9) 다음훈련패턴을학습시킨다. 10) 모든훈련패턴에대하여전부학습할때까지 2단계로되돌아간다. 11) 학습의반복회수를센다. 기본적인학습반복회수는 10,000 번이다. 12) 학습의반복횟수가제한횟수보다작으면 2단계로돌아간다. 13) 이렇게학습된뉴런을기존훈련패턴에대해테스트해본다. 14) 훈련패턴대신다른집합인검사패턴에대해서테스트해본다. 15) 결과를기록한다. δ 3.4 구현한시스템구조 이번연구에서사용한데이터및처리기들의전체시스템을 < 그림.5> 에나타내었다. < 그림 5. 전체시스템구조 > 전체적으로다음의과정으로진행된다. 1) 멜로디패턴에해당하는사인파 (sine wave) 생성 14
2) ADC를통해 discrete wave data 값으로표현 3) FFT를통해 spectrum 분석 4) 평균율을적용하여음 (note) 추출 5) 생성된멜로디패턴을이용하여신경망학습 6) 학습된신경망을평가 Ⅳ. 실험및결과 4.1 실험내용실험은크게두가지주제에대하여행한다. 첫번째는멜로디패턴의학습후검색멜로디패턴에대한정확한응답을보이는지평가하는것이다. 멜로디패턴데이터를분석하면 11개의입력값들이가지는패턴이모두다르기때문에, 이들을신경망에기억시킨후어느정도의오차에서도올바른패턴을인식할수있는지알아본다. 두번째는신경망이멜로디패턴의특징을인식할수있는지를알아보는것이다. 슬플멜로디와즐거운멜로디두가지로분류학습시킨후, 학습시사용하지않았던새로운멜로디패턴에대한평가를행하는것이다. 4.2 실험방법첫번째실험에서는 100개의멜로디패턴을모두기억시킨후, 기존의패턴값을약간씩변형생성하여인식율을평가하였다. 이는실제사람이멜로디를입력하는과정에서중간에다소틀린음높이를넣게되더라도원하는결과를얻을수있을지알아보는것이다. 따라서틀린음은정상음에비해한두음정도가높거나낮게입력되는결과를낳기때문에, 이를고려하여오차패턴데이터를생성하였다. 우선, 정상패턴이가지는 11 개의값중에서하나또는둘정도를임의로지정하여 1~3 정도의오차값으로변경하여전체적으로새로운패턴데이터를생성하였다. 그리고, 각 1~11번째입력에대해서만오차값을생성하여몇번째음이에러율이높은지도알아보았다. 첫번째실험의신경망학습은입력뉴런수 11, 은닉뉴런수가변, 출력뉴런수 7, 30, 60, 100, 그리고 30+n으로설정하였다. 출력뉴런수를 7로설정한것은 100개의데이터에대한은닉뉴런의결과가이진수로표현되도록한것이고, 출력뉴런수를 30, 60, 100으 15
로한것은입력뉴런패턴각각이하나의출력뉴런을가지는효과를위한것이다. 이는경쟁층을이용하는 SOM(Self Organizing Map) 과비슷한의도라고할수있다. 30+n 방식은 60개의패턴에대하여뉴런수 7의이진방식과뉴런수 30, 60, 100의 1-1 방식을혼합하여어느정도효과가있는지를알아보기위한것이었다. 출력뉴런수 7의경우에는각각의출력뉴런의값이 0.5를기준으로높으면 1, 낮으면 0으로평가하였고, 출력뉴런수 100의경우에는 100개의출력뉴런값중가장높은값을가지는출력뉴런이 1 을가지도록하여실제값과비교하였다. 이는멜로디패턴의기억학습이패턴경향에따른분류가되지않기때문에적은수의출력뉴런으로는한계가있을것으로판단했기때문이다. 두번째실험에서는 100개의멜로디패턴을슬픈것과즐거운것의두가지로구분하여 75개의훈련패턴과 25개의실험패턴에대한인식률을평가했는데, 훈련및실험데이터의임의구분이인식률에영향을줄것을고려하여, 100개의패턴을순서대로 25개씩실험패턴으로설정하여네가지훈련및실험데이터를생성하였다. 또한멜로디패턴의요소중하나인음길이를추가하여주었을때의인식률도평가하였다. 두번째실험의신경망학습은입력뉴런수 11, 은닉뉴런수가변, 출력뉴런수 2로설정하였다. 패턴이가지는특징에따라 01 또는 10으로각각의출력뉴런이발현 (fire) 되도록의도한것이다. 음길이를고려한신경망학습은입력뉴런수 11+12, 은닉뉴런수 h1 + h2, 출력뉴런수 2로설정하여음높이관련은닉뉴런수 h1 과음길이관련은닉뉴런수 h2 의값을변경하면서성능을측정하였다. 4.3 첫번째실험결과및분석 먼저출력뉴런이 7 개인경우신경망기억학습능률을알아보았다. 출력뉴런 7 개의기억성능 오류율 (%) 60 50 40 30 20 10 0 55 26 19 16 15 18 17 18 13 12 24 25 26 27 28 29 30 31 은닉뉴런수 16
< 그림6. 출력뉴런수 7 의학습정도 > < 그림6> 은입력 11, 은닉가변, 출력 7 에서 20,000 번학습시킨후의오류율을보인것이다. 그림에서보듯 7개의출력뉴런으로는은닉뉴런수 27 에서 100개의입력패턴중최대 87개의패턴만을제대로기억할수있다. 은닉뉴런수를고정하고학습회수를 30,000번 50,000번 200,000번으로증가시켜보았으나개선되지는않았다. 이는신경망이특성상이산적인데이터구분에취약하기때문인것으로생각된다. 출력뉴런수를 7개로시작한것은입력패턴의번호에따라출력뉴런이이진수의형식으로표현되도록하기위한것인데, 예를들면 17번째패턴의출력뉴런값은 0010001 이된다. 이는뇌의구조를모델링한신경망에서는비록컴퓨터기반이더라도사람의경우와같이번호매김이어렵다는것을알수있다. 또한일반적으로신경망학습에서은닉층의뉴런수는입력층의뉴런수보다같거나적은경향을보이는데, 여기서는오히려두배정도많은수의은닉뉴런이사용되는것을알수있다. 때문에, 출력뉴런의수를증가시키더라도오류율을개선시킬필요성이생겼고, 우선 30개의패턴에대하여 30개의출력뉴런을할당하여해당패턴에대해단하나의출력뉴런만 1의값을가지도록학습시켰다. < 표 6. 출력뉴런수 30 의경우오류 > 은닉뉴런수 6 7 오류수 / 총수 1/30 0/30 그결과, 30 개의입력패턴에은닉뉴런수 7 에서 100% 의기억율을보였다. 이에 60 개 의입력패턴에대하여추가적인실험을행하였는데, 이번에는앞의이진수표현방식 과지금의 1-1 표현방식을혼합하였다. < 표 7. 출력뉴런의표현방식 > 패턴번호 30+1 표현방식 30+2 표현방식 1번째 2번째 29번째 30번째 0 0000...0001 0 0000 0010 0 0100 0000 0 1000 0000 01 0000...0001 01 0000 0010 01 0100 0000 01 1000 0000 17
31 번째 60 번째 1 0000 0001 1 1000 0000 10 0000 0001 10 1000 0000 두가지표현방법을모색하였는데, 하나는 30+1 개의출력뉴런을사용하여하나의출력뉴런을이진수방식으로표현하도록하는데, 앞의 30개씩에대하여 0을출력하고뒤의 30개씩에대하여 1을출력시켰다. 다른하나는 30+2 의표현방식으로앞의 30 개의패턴에대하여두개의추가뉴런을 0 1로표시하고, 뒤의 30 개패턴에대하여 1 0으로표시하였다. 30+1 표현방식의오류율 30+2 표현방식의오류율 오류율 (%) 40 30 20 10 0 7 8 10 12 은닉뉴런수 오류율 (%) 60 50 40 30 20 10 0 5 6 7 8 9 10 11 12 13 18 30 은닉뉴런수 < 그림 7. 30+n 방식의결과 > 실험결과기대와는달리 30+n 방식은처음의이진수표현방식보다도낮은학습정도 를나타내었다. < 그림 7> 을보면 60 개의패턴에대하여가장좋은경우 20% 정도의오류 율을보여준다. 이에 60 개의입력패턴에대하여 60 개의출력뉴런을테스트하였다. 출력뉴런 60 의오류율 오류율 (%) 30 25 20 15 10 5 0 5 6 7 8 9 10 11 12 은닉뉴런수 18
< 그림 8. 60 개의출력뉴런을사용한결과 > 실험결과은닉뉴런수 6 과 8 에서 8% 정도의오류율을보이는데, 여기서학습율을 좀더높이기위하여은닉뉴런수 8 에대하여학습회수를높여실험하였다. < 표 8. 은닉뉴런수 8 에서학습회수에따른오류율 > 20,000 번 30,000 번 50,000 번 100,000 번 5% 5% 5% 5% < 표 8> 에서보듯학습회수가증가하면서초반에어느정도오류율에영향을주지만, 학습회수가아주커지게되면그다지큰영향이미치지않는것을확인할수있다. 다음은 100 개의입력패턴에대해 100 개의출력뉴런을사용한결과이다. 출력뉴런수 100 의오류율 오류율 (%) 60 50 40 30 20 10 0 50 7 8 6 7 8 9 은닉뉴런수 13 < 그림 9. 100 개의출력뉴런을사용한결과 > < 그림9> 는학습회수 10,000 번의경우오류율을보인것이다. 은닉뉴런이 7개인경우 7% 로가장높은효율을보이는데, 학습회수를 100,000 번이상으로증가시켰더니 5% 까지낮아졌다. 출력뉴런의표현방식에따른몇가지경우에대한실험결과를정리하면, 이진수방식이출력뉴런수는줄일수있으나많은은닉뉴런수가필요하며학습기억율이그리높지않은데반해, 1-1 방식은많은출력뉴런수를사용하는문제가있으나높은학습기억율을보여주는것을알수있었다. 이를고려하여오차를포함한패턴에대한인식율을검사할때오류율이낮은 1-1 방식을사용하였다. 그리고, 학습회수에따른인식율을알아보기위해 10,000 번, 50,000 19
번, 300,000 번의학습회수에대한결과를알아보았다. < 표9. 1-point 오차패턴에대한결과 > 학습회수 10,000 50,000 300,000 오류개수 / 전체개수 ( 오류율 (%)) 14/93(15%) 21/95(22.1%) 29/95(30.5%) < 표9> 는패턴의 11개입력값중임의의한지점에대해 +/- 1 만큼의오차가생기도록하여오류율을알아본것이다. 그결과학습회수 10,000 개의경우기본적인훈련패턴의인식에서 93개를인식하고, 해당 93 개의오차검사패턴에대해 14개를인식하지못함으로써 85% 수준의오차패턴인식률을보인다. 300,000 번의학습회수의경우훈련패턴 95개를인식하고, 그중 29 개의오차생성된패턴에대해인식하지못하여 69.5% 수준의오차패턴인식률을보인다. 다음은 11개의입력의 n 번째데이터만 +1 또는 -1 하여오차패턴을생성하였을때의결과를알아보았다. 60 50 오류율 (%) 40 30 20 10 0 1 2 3 4 5 6 7 8 9 10 11 입력뉴런번호 1 만번 5 만번 30 만번 < 그림 10. n 번째입력값의오차에대한결과 > < 그림10> 을보면학습회수가클수록오류율도대체적으로높은것을알수있다. 그리고특정지점, 예를들면 4, 5, 11번째의입력값에대해비교적낮은오류율을보이고있는데, 이는훈련멜로디패턴의한소절이 5~6 정도에서끝나는경우가많다는것과관련이있을것으로생각된다. 하지만일반적인경우에적용될수있을지는판단할수없다. 20
다음으로임의의지점에대한오차를 +/-2 와 +/-3 에대하여실험한결과를알아보았다. < 표10. +/-2, +/-3 에대한오차패턴검사결과 > 회수 10,000번 50,000번 300,000번 +/- 2 48/93(51.6%) 46/95(48.4%) 43/95(45.3%) +/- 3 55/93(59.1%) 53/95(55.8%) 56/95(58.9%) < 표10> 에서보면 +/-1 의경우에비해전체적으로오류율이 50% 수준으로높은것을알수있다. 각학습회수의따른오류율의차이는크게나지않는다. 이번에는 11개의입력값중임의로 2~3 개를추출하여 +/-1 의오차를주어패턴을생성시키고결과를알아보았다. < 표11. 2-point, 3-point 에대한오차패턴검사결과 > 회수 10,000번 50,000번 300,000번 2-point 21/93(22.6%) 34/95(35.8%) 32/95(33.7%) 3-point 28/93(30.1%) 32/95(33.7%) 36/95(37.9%) 여기서는대체로 30% 정도의오류율을보이며오차지점이늘어날수록오류율도증가하는것을알수있다. 학습회수는 10,000 번의경우가다른학습회수에비해다소낮은값을보여주고있다. 마지막으로임의적인오차가아닌, 실제사용자가음성을통해패턴을검색할경우생길수있는오차를고려하여만든실험패턴의결과를알아보았다. < 표 12. 발생가능한오차에대한실험결과 > 학습회수 10,000 50,000 300,000 오류개수 / 전체개수 ( 오류율 (%)) 35/93(37.6%) 42/95(44.2%) 43/95(45.3%) 이경우 40% 안팎의오류율을나타내고있으며, 역시 10,000 번의학습회수의경우가 오류율이상대적으로낮게나오는것을알수있다. 오차에따른인식결과를종합적으로정리해보면오차개수 (point) 가많아지면인식률이 21
떨어지게되며, 오차의값이커질경우에도마찬가지로인식률이떨어지게되는것을알수있다. 또한학습회수가높으면훈련패턴에대해서최적화됨에따라오차를가진검사패턴에대한인식률이오히려떨어지는결과를초래한다는점도알수있다. 따라서학습패턴에대한충분한인식과오차패턴에대한만족스러운인식을보이기위한최소한의학습회수가필요할것으로보인다. 4.4 두번째실험결과및분석 먼저 100 개의입력패턴모두를인식시켜보는실험을하였다. 학습회수는 20,000 번으로설정하였다. 은닉뉴런수에따른에러 에러율 (%) 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 은닉뉴런수 < 그림 11. 은닉뉴런수에따른 100 개의입력패턴인식 > 그결과은닉뉴런수 11, 15 에서 100개의패턴모두를제대로분류하였다. 다음으로패턴 100개중두집단으로나누어 75개는학습용으로사용하고, 25개는검사용으로사용하여실험하였다. 평균적인성능결과를알아보기위해, 100개를 25개씩네집단으로분리하여해당집단마다 25개에속하지않는나머지 75개를학습용으로사용하고그결과를합한후평균하였다. 첫번째실험에서학습회수가적을수록새로운데이터에대한적응력이높다는점도고려하여학습회수를처음의 20,000번보다적은 10,000 번으로설정하였다. 22
60 50 오류율 (%) 40 30 20 10 0 1 2 3 4 5 6 7 8 9 10 11 은닉뉴런수 검사패턴오류율 훈련패턴오류율 < 그림 12. 은닉뉴런수에따른분류성능결과 > < 그림12> 를보면은닉뉴런수가증가함에따라훈련받은 75개패턴에대한분류능력이증가하는데비해 25개의검사패턴에대해서는꾸준히 50% 정도분류능력을보여주고있다. 실제효과적인사용을위해서는 95% 이상의분류성능이필요하다는점을감안하면상당히낮은수치임을알수있다. 때문에이실험에대해서는별도로음높이와그에따른음길이를함께추가하여신경망의입력정보를추가해보았다. 음길이는패턴내의상대적인음길이와패턴의빠르기를고려한숫자값을사용하였다. 그리고, 이를학습시키는데에는부분연결방식 (partially connected) 의신경망을사용하였는데, 여기서는음높이입력값과음길이입력값이각각의은닉뉴런을사용하고이들은닉뉴런이바로출력뉴런으로연결되도록하였다. 음높이관련오류율 64 62 오류율 (%) 60 58 56 54 52 1 2 3 4 5 6 7 8 9 10 은닉뉴런수 < 그림 13. 음높이관련은닉뉴런수에따른오류율 > 23
음길이관련오류율 62 오류율 (%) 60 58 56 54 52 50 48 2 3 4 5 6 7 8 9 10 은닉뉴런수 < 그림 14. 음길이관련은닉뉴런수에따른오류율 > < 그림13> 은음길이에관련된뉴런수를 1로고정한상태에서음높이에관련된뉴런의수를증가시킴에따른오류율을보이고있으며, < 그림14> 는 < 그림13> 에서얻은가장낮은오류율의음높이관련은닉뉴런에서음길이관련은닉뉴런을증가시킴에따른오류율을보인것이다. 결과에서보듯음길이를추가한경우에분류성능이오히려더욱떨어진것을알수있다. 이는음높이와깊이를가진멜로디만으로는신경망을통해곡이슬픈지즐거운지분류하기가상당히어렵다는것으로, 추가적으로곡의빠르기및화성학적지식등에대한정보가필요할것으로보인다. Ⅴ. 결론 5.1 연구결과요약이논문에서는멜로디패턴인식을컴퓨터에서어떻게처리할것인가에대하여살펴보고, 이를분류, 검색하는데신경망의사용이효과적인지를실험해보았다. 사인파로생성한멜로디패턴을컴퓨터가다룰수있는데이터로변환시키기위해 ADC 기법이사용되었으며, 주파수분석을행하기위해서는 FFT 기법이필요하였다. 주파수값으로부터음높이를구하는데에는평균율의지식이필요하였고이를반복하여하나의완전한패턴을얻을수있었다. 실험결과를보면, 첫번째실험의경우다층퍼셉트론구조의신경망을이용한멜로디패턴의기억학습이생각과는달리 100% 의인식률을보여주지못하는것을알수있었 24
다. 학습에사용한패턴이첫음에대한오차값을가지도록함으로써다른패턴들사이의값들이가지는유사성이높아졌고, 따라서신경망학습시이를확연하게인식시키는것이쉽지않는것으로보인다. 이는인간의경우도마찬가지로비슷한멜로디패턴에대해혼동을일으킬확률이높다는것을고려하면이해할수있겠다. 인식률을높이기위해서출력뉴런의표현방식을몇가지시도하였으며, 이진수와같은컴퓨터적인표현보다는인간의사고방식에가까운 1-1 방식이더효율이높다는점을알수있었다. 오차를가진패턴에대한실험결과, 학습회수에따라오차패턴에대한오류율이달라지는것을볼수있었고, 가급적학습회수를높이지않는것이오차에강한결과를나태내는것을알수있었다. 두번째실험에서는멜로디패턴이슬픈곡과즐거운곡으로분류될수있는지알아보았으나, 실험결과인식률이 50% 수준에머무는불만족스러운결과를보여주었다. 이는실험에사용한멜로디패턴이가진음높이와음길이의순수데이터만으로는신경망이분류작업을효과적으로하는데한계가있는것으로보인다. 따라서멜로디의화성적지식과신경망의구조변경이필요할것이다. 5.2 연구결과활용방안논문에서제시된멜로디패턴인식시스템은실용적으로활용될수있는여지가있다. 굳이곡의제목이나가사를모르더라도곡의멜로디를입력하는것으로원하는곡을찾을수있는데, 특히입력부분에서 sine wave 대신사람의목소리로입력하도록처리해주면가정용컴퓨터에마이크를연결하는것만으로쉽게검색이가능하게된다. 이것을기존의인터넷검색엔진에적용할경우멜로디를통한곡검색이가능하게되고, 제목과가사검색을동반할경우더욱정확한곡검색이가능할것이다. 또한, 노래방 (karaoke) 시스템에응용될경우원하는곡을부르기위해곡번호를일일이찾아야할필요없이마이크에멜로디를입력해주는것만으로쉽게곡을찾을수있게된다. 한편멜로디의분위기를인식시키는문제는인공신경망이감정적처리도다룰수있는지를알아볼수있는연구분야로, 인간의뇌에더욱가까운인공신경망구조를모색할수있는기반자료로서활용할수있다. 또한앞의검색과마찬가지로감정적주제에대한분류검색용도로도충분히사용가치가있을것이다. 25
5.3 향후과제이번실험에서는멜로디패턴의자료화방법과더불어이를검색하는방법으로신경망이어느정도실용성이있는지를알아보았다. 멜로디패턴은 ADC, FFT, 평균율의지식을사용하여원하는멜로디음을추출해낼수있으며, 향후입력부분에서음성인식이가능토록하여음높이, 음길이뿐만아니라가사까지한번에입력, 검색이가능하도록구현하면다목적검색시스템으로도사용이가능할것이다. 다음연구에는신경망을이용한멜로디패턴을기억학습에있어수백 ~ 수천개이상의곡에대하여 100% 에가까운학습율을구현할수있어야하며, 동시에검색입력과정에생길수있는오차값에대한인식능력을높일수있는신경망구조에관한연구가필요하다. 또한일부분의멜로디패턴이아닌곡전체의멜로디를자료구조화하여저장하고이를어떻게효율적으로검색할지에관한연구도고려해봐야할것이다. 다른한편으로검색을위해입력한패턴과저장되어있는자료패턴들의값들을일대일검사하여일정값이하의오차가나는곡들을추천하는방식도고려해봄직하다. 이를신경망검색과함께사용하면더욱높은검색정확도를가질수있을것이다. 26
참고문헌 [1] 박관우 & 안정모옮김, 음악을위한음향학, 삼호출판사, 1990, pp. 138 ( 원저 : Donald E. Hall, Musical Acoustics An Introduction) [2, 3] Thomas D. Rossing, The Science of Sound 2 nd edition, Addison Wesley, 1989, p.40, pp.171-178 [4] Sophocles J. Orfanidis, Introduction to Signal Processing, Prectice Hall, 1996, p.77 [5] Oppenheim & Schafer & Buck, Discrete-Time Signal Processing 2 nd edition, Prentice Hall, 1999, pp.187-193 [6, 7] Sophocles J. Orfanidis, Introduction to Signal Processing, Prentice Hall, 1996, pp.483-490, pp.513-520 [8] 장병탁, 신경망, Natural Sciences, Vol. 8, 2000. [9, 10] Simon Haykin, Neural Networks a comprehensive foundation 2 nd edition, Prentice Hall, 1999, pp.10-13, pp.156-173 [11] 김대수, 신경망이론과응용 (I), 하이테크정보, 1992, pp.110-117 27