Research/Others..

신경회로망...

shhyun 2016. 9. 23. 19:18

예전에 처음 신경회로망을 배우고, 알고리즘으로 학습을 모사할 수 있다는 것에 대해서 상당한 매력을 느꼈었는데, 잘 정제되어 있는 학습데이터가 없이는 결과가 좋지 않았기에 그 이후로 크게 관심을 두고 있지는 않았었다. 한동안 그러다가 비전과 관련한 분야에 대해 공부하면서, 특징점을 추출하기 위한 부분을 신경망을 활용하여 드라마틱한 성능의 향상을 보여주는 것을 보고 다시 관심을 가지게 되었었다.

 

신경망에 대해 다시 관심을 갖기 시작했던 때에는 호기심에 한창 CUDA로 GA에서 실수최적화 기법을 사용하는 알고리즘들을 병렬화시키는 부분에 대한 개발하고 있었다. 그래서 처음에는 당연히 가중치 계산에 대해서 예전보다 더 큰 규모의 신경망을 보다 빠르게 학습시키는 것에 대해서만 생각하고 있었다. 

 

CUDA 를 처음 활용하면서, 그때 오류역전파 알고리즘을 구현하고, 10계층에 5천개 정도의 뉴런을 학습시키는 프로그램을 만들어 돌리면서, 진짜 빠르다는 생각은 하고 있었지만, 사실 제대로 최적화가 안되었었다. 아주 단순한 문제에 대해서 5천개의 뉴런을 학습한다는 게 가당키나 한 말인가? Learning Set이 5천개의 뉴런을 학습시킬 만큼 다양한 데이터 셋을 갖출리가 만무했고, 당연히 결과는 수렴 속도는 진짜 빠르네 였을 뿐이다. 물론, 그 당시에는 왜 안될까에 대해서 계속 의문이 있었을 뿐이었지만...

 

시간이 좀 지나고 나서, CNN 과 RNN 에 대해서 알게 되었다. 처음 CNN 이나 RNN 을 접했을 때에는 그 부분에 대해 정확히 이해하지 못하고, 단순히 더 계층화 되고, 다른 형태의 전달함수를 사용하지 했을것 같다는 정도로 생각했던게 문제 였다. 결론적으로 다시 하나씩 곱씹어보고 당연히 비전쪽에 잘 맞춰져 동작할 수 있겠구나 라는 생각이 들게 되었지만... 이 시점에 나는 학습데이터를 충분히 확보하지 못하는 시점에도 어느정도의 목표를 향해 결과를 보여줄 수 있는 특성이 있는 진화 신경망 쪽에 더 관심이 많았다.

 

회사에 오고나서는 신경망이나 진화연산과 같은 머신러닝 기법을 사용하기가 참 힘들었다. 가장 큰 장벽은 확률적. 그리고 언제나 동일한 해를 보장하지는 않는다는 점. 그런 부분을 이해시키는 것이 너무 말도 안되는 일이었다. 내가 일하는 곳이 산업용 로봇을 만드는 곳이니 당연한 것이기도 했다. 비교적 최근에 다시 고장예지나 다른 분야에 이러한 기법들을 사용할 수 있다는 것에 대해서 사람들이 인지하기 시작한건 참 다행이라 생각한다.

 

어쨌든, 신경망은 CNN과 RNN 이후로 눈부신 발전을 거듭하고 있고, 더 많은 연구자들과 함께 획기적인 결과물들이 쏟아져 나오고 있다. 놀랍고, 경이롭다. 언젠가는 내가 연구하는 여러가지 기법들 중, 나로 인하여 이러한 폭발적인 연구 성과를 보여줄 수 있기를 희망한다.