Machine learning 가속기
on
처음 (인공)신경망에 대해서 알게 되었을 때가 96년 이었던 것 같은데, 2020년에 이르고 나니 신경망처리를 위한 하드웨어 가속기가 사실상 표준화 되어버렸다고 할 수 있을 것 같다. 대부분의 회사들은 2010년초부터 열심히 해서 실험용 칩도 만들어내고 했던 것 같은데, 어쨌든 그렇다.
90년대 신경망에서는 주로 sigmoid function을 써서 비선형성을 부여하려고 했었다면 지금은 ReLU(rectified linear unit)가 대세다. 이걸 활성화 함수라고 부르는데 이런 용어를 붙여놓는 것도 뭐랄까 좀 어색하다고나 할까? 뭘 활성화하겠다는 것인가? 그냥 dot product한 결과를 비선형 적으로 굴절 시키겠다는 것인데, 굴절 함수가 더 맞지 않을까? 기왕 이름을 짓는다면 말이지. ReLU도 그 특성이 마치 다이오드의 특성곡선 비슷하다고 지어놓은 것 같은데, 신경망이 돌아가고 있는 것과 다이오드는 사실상 아무 관련이 없다. 어쨌든 이 함수의 미분결과가 아주 깔끔하고 결과적으로 좋은 인식 결과를 내주는 것 때문에 사실상 이것도 업계 표준이 된 듯 하다.
어쨌든 곱셈기를 엄청 때려박고 사람들의 취향에 맞춰서 integer multiplier/floating point multiplier를 선택해서 쓸 수 있게 해놓았고, 그렇게 해서 적당한 개수의 처리기를 넣어두고, 그렇게 수도 없이 값을 넣고 빼고 넣고 빼고 반복할 수 있게 해 놓았다.
구조상 CNN (convolutional neural network)를 지원하는 것도 그냥 기본이 되어있다. 이게 일반 CPU에도 들어가는 세상이 되었고 사실상 DL과 별로 관련없을 것 같은 SoC에도 들어가고 있는 추세인 듯 하다 (나처럼 미래 기술에 무감각한 사람이 알 정도면).
계산량이 너무 많고 사실상 묻지마 방법론이다 해서, 또 레이어가 너무 많아지면 이게 학습이 되는 것인지 마는 것인지, local minima로 가는 건지 마는 것인지, 과연 수렴은 되는 것인지 마는 것인지 한참 옥신각신하다가 전부 다 죽어버렸던 시절이 있었던 것을 생각하면, 지금은 그 ‘묻지마 학습법’ 때문에 각광을 받고 있다니까 놀랄 일이지 않은가?
더구나 신호처리 세계에 들어와서 이미 이론과 체계가 완전히 잡혀버린 영역에서도 ‘묻지마 학습법’이 더 좋은 성능을 낼 수 있다고 하고 있는 지경이다. 뭐 아직까진 계산량이 너무 많고 그래서 전력소모(열)가 많은 관계로 쓸 생각을 안하는 게 맞지 싶다만. 혹시 모르니 넣어두는 것 같다고나 해야할까? 기왕에 큰 다이에 칩을 찍어낼 거라면 짜투리 공간을 놀리지 말고 이런 거라도 넣자 하는 세상이다.
10년 후엔 무슨 일이 벌어질지 자못 기대가 된다.