사람의 시각인지 과정을 모방한 합성곱 신경망은 태생적으로 컴퓨터 비전 분야에서 독보적인 방법으로 사용되고 있으며, 다양한 형태의 데이터에서 원하는
특성을 추출하는 데 탁월한 성능을 보여주기 때문에 신호처리나 음성인식 분야 등 여러 분야에서 활용되고 있다.
3.3 파이썬을 이용한 구현 및 시뮬레이션
그림. 5는 Python으로 합성곱 신경망을 이용하여 개발한 음성학습 시뮬레이터를 나타낸다. 이 시뮬레이터의 딥러닝 알고리즘은 CNN으로 구성되어 있는데,
그림. 5의 (a) 부분과 같이 학습데이터 및 시험데이터를 불러올 수 있고, (b) 부분과 같이 학습 반복 횟수(Number of Repetitions),
임베딩 벡터 크기(Embedding Size), 필터 크기(Filter Size), 채널 수(Number of Channel), 학습률(Learning
Rate) 등을 설정할 수 있으며, (c) 부분과 같이 시뮬레이션 결과를 확인할 수 있도록 하였다.
그림. 5. CNN을 이용한 음성학습 시뮬레이터
Fig. 5. Voice learning simulator using CNN
그림. 6은 학습데이터를 나타낸다. 학습데이터는 사람의 음성명령을 텍스트로 변환하여 전처리한 데이터이다. 학습데이터 행렬은 114×67으로서, 텍스트(.txt)
파일 형식으로 작성되었다. 각각의 객체는 탭(Tap)으로 구분되어 있다. 첫 번째 행(Row)은 사람의 음성명령 ‘앞으로 가’에 해당한다. 먼저,
‘앞으로 가’ 라는 명령을 형태소 분석을 통해 ‘앞’, ‘으로’, ‘가’로 분리한다. 분석된 형태소는 IDS (Intelligent Data Systems)
연구실의 자연어 처리를 위한 ‘꼬꼬마 형태소 분석기’를 사용하여 품사 태깅을 진행하였다. 그 다음 학습데이터 생성을 위해 자체적으로 제작한 형태소
사전을 참조하여 각 형태소와 품사를 16진수로 맵핑하고, 10진수로 변환하였다
(20).
그림. 6. 학습데이터
Fig. 6. Training data
‘앞’은 형태소 사전에서 순서가 1179번째에 위치하고, 품사는 일반명사(NNG)이므로 ‘0’에 해당한다. 마찬가지로 ‘으로’, ‘가’에 대해서도
변환하면 ‘앞으로 가’는 1179, 0, 30, 22, 177086, 6과 같이 변환된다. 각 행은 사람의 음성명령(‘앞으로 가’ 부터 ‘오른쪽 뒤로
이동해요’ 까지 114개)을 나타낸다. 각 열(Column)은 60열 까지 형태소 분석 된 음성명령의 전처리 데이터 및 패딩(Padding)값 ‘1’이
입력되고, 61열 부터 67열까지 스마트 토이의 동작을 나타내는 7bit 판별값(1,0,0,0,0,0,0 : 전진, 0,1,0,0,0,0,0 : 후진,
..., 0,0,0,0,0,0,1 : 우측으로 후진)이 입력된다
(19).
그림. 7은 21 × 67인 시험데이터 행렬을 나타낸다. 시험데이터는 학습데이터와 마찬가지로 전처리된 데이터를 텍스트 파일 형식으로 작성하였으며 각각의 데이터는
탭으로 구분되어 있다.
그림. 7. 시험데이터
Fig. 7. Test data
첫 번째 행은 사람의 음성명령 ‘앞으로 가보라우’에 해당한다. 먼저, ‘앞으로 가보라우’ 라는 명령을 형태소 분석을 통해 ‘앞’, ‘으로’, ‘가보’,
‘라’, ‘우’로 분리한다. 그 다음 형태소 사전을 참조하여 각 형태소와 품사를 16진수로 맵핑하고, 10진수로 변환하였다. 학습데이터의 형태소 분석과
마찬가지로 분석하면, ‘앞으로 가보라우’는 1179, 0, 30, 22, 183569, 6, 866, 37, 177402, 6과 같이 변환된다. 마지막
행은 사람의 음성명령 ‘멈처’에 해당한다. ‘멈처’는 형태소 분석을 통해 ‘머’, ‘ㅁ’, ‘처’로 분리된다. 형태소와 품사를 16진수로 맵핑하고,
10진수로 변환하면 ‘멈처’는 177588, 7, 195, 39, 1231, 0과 같이 변환된다. 각 행은 사람의 음성명령(‘앞으로 가보라우’ 부터
‘멈처’ 까지 21개)을 나타낸다. 각 열은 60열 까지 형태소 분석 된 음성명령의 전처리 데이터 및 패딩값 ‘1’이 입력되고, 61열 부터 67열
까지 스마트 토이의 동작을 나타내는 7bit 판별값(1,0,0,0,0,0,0 : 전진, 0,1,0,0,0,0,0 : 후진, ..., 0,0,0,0,0,0,1
: 우측으로 후진)이 입력된다.
표 2는 시뮬레이션 조건에 따른 손실(Loss), 정확도(Accuracy), 수행 시간(Time)을 나타내고,
그림. 8은 CNN에서 입력데이터가 5×5인 경우, 필터 크기가 3일 때 연산과정을 나타낸다.
그림. 9는 학습 및 시험데이터 불러오기와 반복횟수, 벡터 크기 등 머신러닝의 환경을 설정할 수 있는 초기화면을 나타낸다.
표 2. 시뮬레이션 조건
Table 2. Condition of simulation
반복 횟수
|
벡터 크기
|
필터 크기
|
채널수
|
학습률
|
손실
|
정확도 [%]
|
수행 시간 [s]
|
500
|
100
|
3, 4, 5
|
100
|
0.01
|
3.79
|
62.5
|
55
|
0.02
|
0.50
|
87.5
|
72
|
0.03
|
0.00
|
100
|
62
|
0.04
|
80.04
|
87.5
|
65
|
그림. 8. CNN의 필터 크기가 3일 때 연산과정
Fig. 8. Computation process of CNN (filter size : 3)
그림. 9. 학습 및 시험데이터 불러오기 & 머신러닝 환경설정
Fig. 9. Import training and test data & ML configuration
그림. 10은 시뮬레이션 결과를 나타낸다.
그림. 10에서와 같이, 시뮬레이션 결과에는 정확도 및 손실 그래프, 학습에 소요된 시간이 표시된다. 학습이 반복 횟수까지 진행되는 동안 실시간으로 그래프 및
시간이 표시되도록 설계하였다. 시뮬레이션 결과 정확도는 100%, 손실은 0, 시뮬레이션 시간은 76초가 소요되었음을 알 수 있다.
그림. 10. 시뮬레이션 결과
Fig. 10. Result of simulation
표 3은 학습이 진행되는 단계, 손실, 정확도를 나타낸다. 시뮬레이션이 진행되는 동안 Windows Powershell 창을 통해 결과를 실시간으로 표시되도록
구현하였다.
표 3의 첫 행 Step 453은 453번째 반복 횟수, 이때 손실(Loss)은 21.29, 정확도(Acc)는 0.875를 각각 나타낸다. 즉, 학습률이
0.03일 때 Loss는 12.51, Acc는 0.875가 되는데, Loss와 Acc는 변동하면서 수렴하는 것을 알 수 있었다.
표 3. 시뮬레이션 결과
Table 3. Result of simulation
Step
|
Loss
|
Acc
|
453
|
21.29
|
0.875
|
454
|
20.78
|
0.750
|
···
|
···
|
···
|
499
|
0.00
|
1.000
|
500
|
12.51
|
0.875
|