AI(머신러닝)으로 뭘 해볼 수 있을까? [히든싱어편]
이제 인공지능(AI) 혹은 머신러닝이란 용어가 생소한 사람은 없다. 정확히 어떤 원리로 어떻게 동작하는지는 모른다고 하더라도 대충은 어떤 일들을 하는지도 알 것이다.
이들의 원리, 동작, 의의, 활용 분야 등등을 언급해 볼 수도 있겠지만, 그런건 좋은 책을 사서 보든, 수업 시간에 공부하든 관심이 있는 사람들이 각자 노력하기로 하고, 여기서는 잘 만들어진 머신러닝 툴이 있다면 그걸 어디에 써먹을 수 있을지 얘기 해봤으면 한다.
더 좋은 인공지능을 개발하는 것도 물론 중요하지만 잘 개발된 인공지능을 어디에 써먹으면 도움이 될지 혹은 더 재미있을지 생각하는 것도 정말 중요한 이슈이며, 실제로 일반 사람들이 사용할 수 있도록 하기 위한 머신러닝 툴들이 개발되고 있다.
내가 건드려본 적이 있는 주제들을 위주로 시리즈 게시물을 (다음 업데이트는 언제가 될지 나도 모르지만..) 해보려 한다. 나라면 어떤 재미있는 주제를 해볼까? 라는 생각들을 한번씩 해볼 수 있으면 좋겠다.
< 오늘의 주제는 “히든싱어” >
히든싱어는 원곡 가수 1명과 다른 여러 모창자들이 부르는 노래를 듣고 원곡 가수를 찾아내는 TV쇼다. 눈치 챘겠지만, 주제를 길게 풀면 과연 “동일한 조건에서 인공지능이 사람들보다 더 잘 맞출 수 있을까?”를 시도해 봤다는 것이다. 어떻게 할지도 모르겠고 어려운 일이라고 생각이 들지 모르겠지만, 미리 밝히자면 학부 학생들 3명과 같이 진행했고 나름 성공적이었다. (TV 출연도 했지만, 그건 뭐 내 얼굴이 나간 것이 아니라서 패스)
< 히든싱어의 조건 >
사람들과 인공지능의 대결을 위해 이쯤에서 히든싱어 게임의 조건을 말해보자. 간단한 실험을 위해 쇼의 진행과는 조금 다르지만, 기본적인 게임 룰은 같다. 대결이므로 조건은 동일해야지.
1. 원곡 가수는 유명하다.
- 사람들은 원곡 가수의 노래를 들어본 적이 있고 이를 기준으로 판단한다.
=> 인공지능에게 원곡 가수의 노래를 들려준다. (=학습 시킨다)
여기서 중요한 점은 현재 노래가 아닌 원곡 음원으로 학습한다는 것
2. 원곡 가수 1명과 모창 가수 5명은 돌아가면서 한소절씩 노래를 부른다.
- 사람들은 누가 가장 원곡 가수인지 추측한다.
=> 학습된 인공지능 역시 누가 원곡 가수일지 추측한다.
사실 이 조건은 인공지능에게 상당히 불리하다. 원래 인공지능은 일반적으로 학습을 위해 상당히 많은 양의 데이터가 필요하다. 겨우 앨범에 있는 노래 하나 정도는 원곡 가수의 목소리를 학습하기에 충분한 데이터라고 할 수 없다. (사실 사람들이랑 비슷한 조건으로 하려면 라이브나 콘서트 녹음한 것들도 여기저기서 가져와서 학습 시켜야 되는데... )
< 실험 결과 >
사람과의 비교를 위해 24명의 학생을 섭외해서 히든싱어 게임을 진행했다.
심지어 30곡이나 했다. (소정의 수고료도... ㅎㅎ) 다음은 사람들의 게임 결과다.
평균 정답률은 겨우 33% 다. 6지선다인 점을 생각하면 꽤나 낮은 점수다. 최고 성적을 기록한 학생은 30곡 중 17곡이나 정답을 맞혔고, 꼴찌는 겨우 4개 맞혔다. 사실 TV쇼를 보면 알 수 있듯이 이 게임 자체가 어렵다. 모창 가수들의 실력은 엄청나고, 심지어 원곡 가수 역시 앨범과 라이브는 다르다. 오히려 모창 가수가 더 원곡 가수인 것처럼 들리는 경우가 많다.
그럼 인공지능의 실력을 보자.
3개 결과가 있는데 처음 한줄만 보면 된다. 정답률이 63% 이다. 사람들보다 훨씬 좋은 결과이다. 앞서 말했듯이 이 게임은 인공지능 입장에서 상당히 불리한 조건이었다. 해당 원곡 가수의 다양한 데이터를 더 추가하여 학습했다면 아마도 정답률이 훨씬 올라갔을 것이다.
자! 여기까지만 봐도 된다. 아래에서는 성능 향상을 위한 꼼수들을 간단히 언급할 것이다.
< 성능 향상을 위한 꼼수들 >
이 파트를 본다면 주의사항이 있다. 사실 여기에 기술적인 것들을 자세히 풀기에는 무리가 있어 간단히만 언급할 것이다. 따라서 아래 내용을 다 이해하기 위해서는 머신러닝에 대한 기본적인 이해가 있어야 한다. 머신러닝을 공부해 본 적이 없다면 어느 정도까지만 알아듣고 나머지는 이해가 가지 않는 것이 정상이란 뜻이다.
1. 데이터 전처리
일단 있어 보이기 위한 그림 하나를 던진다 ^^
어떻게 하면 더 잘 학습할 수 있을까를 고민한 결과 만들어진 학습 및 추측 과정이다.
영어로 되어 있어서 엄청 대단한 것 같지만 사실은 그렇지도 않다. 소리를 추출하여 학습할 때 보통 하는 과정들이다. 저 과정들을 하기 위한 알고리즘, 프로그램들도 이미 다 공개되어 있어 가져다 쓰면 된다.
주요 처리만 살짝 언급하면,
- 남성 목소리인지, 여성 목소리인지에 따라 일정 주파수 이하의 소리는 모두 컷 (필요없는 잡음들을 제거하기 위해)
- 소리를 더 잘 구분하기 위한 특징들을 추출하기 위해 패스트 퓨리에 트랜스폼 (FFT) 이라는 알고리즘과 MFCC 라는 알고리즘을 사용
사실 그밖에는 자잘한 처리들이고, 다시 말하지만 FFT도 MFCC도 소리를 처리하는 일반적인 과정들이다. 둘을 완전히 이해하기는 어렵지만 가져다 쓰는건 어렵지 않다.
2. 오토인코더
위에서 계속 AI가 학습을 한다고 설명했지만 앞서 말한 AI는 사실 오토인코더이다. AI는 다양한 종류의 머신러닝으로 구현할 수 있고 그 중 하나가 오토인코더라는 뜻이다.
오토인코더는 다음 그림과 같은 구조로 되어 있다. (매우 단순화 시킨 그림)
역할은 매우 단순. 입력이 들어오면 슉 압축했다가 다시 팍하고 늘린다. 입력을 일정한 법칙에 의해 재생산 한다는 뜻이다. 이게 무슨 의미가 있는 것인가 잘 이해 되지 않을 것이다.
우리의 히든싱어 게임에서 보자면, 오토인코더의 학습은 이렇다. 원곡 가수 노래를 입력으로 주고 출력이 입력과 최대한 비슷하게 나오도록 학습을 진행한다.
중요한 점은, 이렇게 학습된 오토인코더는 원래 학습했던 원곡 가수의 노래를 넣으면 입력과 비슷한 출력을 뱉어내지만, 생소한 노래를 들으면 입력과 전혀 다른 출력이 나오게 되는 것이다. 왜? 원곡 가수의 노래만으로 입력과 출력이 비슷하게 나오도록 학습 했으니까!!
결론적으로 입력과 출력이 비슷할수록 원곡 가수의 노래일 확률이 높고, 입력과 출력이 다를수록 모창 가수일 확률이 높다는 것이다. 그래서 우린 6개의 후보 노래들을 학습된 오토인코더에 넣고 그 중 입력-출력 차이가 가장 적은 한 명을 원곡 가수일 것이라고 추측해 볼 수 있다.
입력과 출력의 차이를 그림으로 보여주면 아래와 같다. 첫 번째 그림이 원곡 가수의 입력-출력 차이, 두 번째 그림이 모창 가수의 입력-출력 차이이다.
잘 보면, 모창 가수의 입력-출력 차이가 평균적으로 더 크고 중간 중간 큰 차이를 보이는 것을 알 수 있다. 인공지능은 이런 식으로 모창 가수를 걸러내고 원곡 가수를 찾아낼 수 있다.
<2021년9월>
박호성 교수는 인공지능 보안, 인증, 네트워크 보안 등을 전공했으며, 2020년부터 부산외국어대학교 사이버경찰학과에서 재직중이다.