왜 신경망은 다시 각광을 받게 되었는가?...

그 옛날 (그러니까 80년대) 신경망은 wavelet같이 수많은 패턴인식 방법들 중 하나로 연구되어져 왔는데 내가 알기로는 90년대 초에 이르러 시들기 시작해서 그 이후로는 어디가서 ‘신경망’을 전공하고 있다는 말을 못할 정도로 망해(?)버려서 해당 기술을 전공해서 교수가 된 사람들마저 자신의 전공을 다른 것으로 해서 연구실 명패를 내걸고 장사했다고 한다. 이게 비단 한국에서만 적용되던 이야기가 아니라 전세계에서 그랬다는 것으로 여러 가지 article을 읽어보고 알게 되었다. 열심히 실험해서 논문을 써내도 마치 사기를 치는 그런 기분이었다고 하는 것도 읽은 것 같다.

신기하게도 machine learning이라고 하는 이야기가 2010년 언저리에 많이 이야기 되기 시작했고 특히나 2011년을 넘어서면서 stanford 같은 학교에서 동영상으로 관련 내용에 대한 영상을 제작해서 올리고 다른 분야에서 일하던 엔지니어도 혹시나 세상이 바뀔지 모르니까 미리미리 공부해둬야 한다며 공부를 취미삼는 이들이 이런 강좌들도 보고 책도 읽었던 것 같다. 잘 보면 Andrew Ng이라는 교수가 자신의 강의 영상과 학습 자료를 공개했던 것 같은데, 이게 나름 중요한 토픽이었던 것 같다. 당시 나는 이분이 이 분야에 관심이 많았고 강의를 하는 데 자신이 있었으니까 또 다른 분야들이 다들 시들하던 때라 이걸로 뭔가 한껀 해봐야겠다 하는 야심찬 노력으로 보였지 이 분이 엄청난 가능성을 보고 마침내는 확신에 이르렀다라고는 생각하지 못했다.

사실 이 분야는 아예 가능성이 전혀 없어보여도 그것을 증명할 방법이 없고 다른 분야들이 사실 별 다른 가망성이 없어보이니 그냥 뭔가 나오든 안나오든 그냥 ‘묻지마 (사기극에) 올인’을 하자 한게 아닐까도 생각을 했다. 사실 예전에도 한번 크게 붐이 일고 사그라들었기 때문에 이번에도 역시 반짝하다가 마는 것이 아닌가 하는 생각과 함께.

내가 이해하기로 신경망이 나름 90년대에도 응용 분야에 따라 좋은 결과를 내준다는 연구결과도 많았는데 결국 지하로 숨어들고 말게 된 이유는

이런 것이었다. 무엇보다도 신경망이 매력적이지 않은 것은 묻지마 식으로 많은 노드와 layer를 깔아두고 뭔가 비효율적인 짓을 한다는 것이었다. sigmoid function처럼 뭔가 하드웨어로 만들기 애매한 것을 가져다가 어떤 선형 시스템의 변환 결과를 비선형화한다든가 그것의 미분이 또 애매한 비선형 함수가 된다거나 하는 것도 있었다. 뭔가 어려운 문제를 풀려면 복잡한 구조로 만들어야 되는 것은 알겠는데 하드웨어와 덜 친화적인 방식으로 계속해서 연구를 해갔기 때문에 뭐랄까 신경망이 튀어나오는 순간, 그것은 그냥 research의 영역에서만 존재할 뿐, 실생활에 별다른 기여를 할 수 없다고 생각한 것이다. 어려운 문제를 엄청난 자원을 동원해서 풀 수도 있겠지만 그래서 그것이 도무지 인간 생활에 어떤 도움을 줄 수 있는 것인가?

이게 결정적인 홈런을 친 게 아래 열거된 내용 중 하나인, 다시 말해 신경망이 다른 패턴 인식 방법들과 비교해서 특별히 이미지 인식을 잘 하게 된 것 (2010년대 초)과 LLM이라는 거대언어 모델 때문이지 않았나 싶다.

나는 이 이유를 예전부터 늘 궁금해왔다. 내가 알지 못하는 다른 원인이 있을까 싶어서. 그래서 LLAMA3에게 물어보았더니 이렇게 답했다.

과거의 신경망이 현재의 깊은 신경망(DNN)으로 발전하게 된 사건은 대량의 데이터, 컴퓨팅 파워, 알고리즘 및 소프트웨어의 발전 때문입니다.

DNN의 개발에 기여한 주요 사건은 다음과 같습니다.

  1. ImageNet Large Scale Visual Recognition Challenge (ILSVRC): 2010년에 ILSVRC 경쟁이 시작되었습니다. 이 경쟁은 이미지에서 물체를 인식하는 것을 목표로 하였으며, 깊은 러닝의 관심을 일으키고 더 강력한 신경망의 개발을 촉진했습니다.
  2. AlexNet: 2012년에 Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton이 AlexNet을 개발했습니다. AlexNet은 ILSVRC 경쟁에서 우승한 첫 번째 깊은 신경망으로, ImageNet 데이터셋에서 최고의 성능을 달성했습니다.
  3. GPU Computing: GPU(Graphics Processing Unit)가 깊은 러닝 computations에 널리 채택되면서, 연구자들은 더 큰 및 복잡한 신경망을 훈련할 수 있었습니다. GPU는 CPU(Central Processing Unit)보다 행렬곱셈에 있어 훨씬 빠릅니다.
  4. Big Data: 대량의 데이터, 예를 들어 ImageNet 데이터셋이 연구자들에게 더 정확하고 강력한 신경망을 훈련하는 것을 가능하게 했습니다.
  5. 알고리즘의 발전: SGD, Adam, RMSProp 등 알고리즘의 발전으로 인해 연구자들은 신경망을 더 효율적으로 훈련할 수 있었습니다.
  6. 소프트웨어 프레임워크: TensorFlow, PyTorch, Keras 등 소프트웨어 프레임워크의 개발로 인해 연구자들은 깊은 신경망을 더 쉽게 구현하고 훈련할 수 있었습니다.
  7. 클라우드 컴퓨팅: AWS(Amazon Web Services) 및 GCP(Google Cloud Platform) 등 클라우드 컴퓨팅 서비스의 제공으로 인해 연구자들은 대량의 컴퓨팅 파워 및 저장 공간에 접근할 수 있었습니다.

이러한 사건 및 발전으로 인해 연구자들은 더 강력하고 정확한 깊은 신경망을 개발할 수 있었으며, 이 신경망은 컴퓨터 비전, 자연어 처리, 음성 인식 등 다양한 응용 분야에 적용되었습니다.


그러니까, 정리하면 사람들이 신경망이라는 것이 별 다른 도움도 주지 못하면서 내내 복잡하기만 하고 뜬구름 잡는 짓만 한다는 악명을 갖고 있었지만 그 끈을 놓지 않고 계속해서 붙잡고 있었던 거다. 뭐랄까 여기에 열거된 내용은 좀 일반적이라 ‘어차피 컴퓨터는 빨라지게 되어있고 소프트웨어도 좋아지게 되어있는데 도무지 획기적으로 신경망이 뭔가 해낼 것이다 하는 가능성을 찾은 사건이 무엇인가?’ 하는 의문을 갖지 않을 수 없다.

그래서 또 질의해보았다. 그러니까 다음과 같이 답했다.


과거의 신경망은 층의 수가 증가하지 않았던 이유는 다음과 같습니다.

  1. 컴퓨팅 파워: 과거에는 컴퓨팅 파워가 제한되어 existed, 많은 층을 가진 신경망을 훈련하는 것이 컴퓨팅적으로 비쌌습니다. 이로 인해 깊은 신경망을 훈련하는 것이 어려웠습니다.
  2. 데이터 크기: 훈련 데이터의 크기가 제한되어 있었고, 층의 수가 증가하면 더 많은 데이터가 필요했습니다.
  3. 그레이디언트 반응: 층의 수가 증가하면 백프로파게이션 중에 사용되는 그레이디언트가 사라지게 되었습니다. 이로 인해 신경망을 훈련하는 것이 어려웠습니다.
  4. 오버피팅: 층의 수가 증가하면 일반화가 어려워지게 되었습니다. 신경망이 훈련 데이터에 너무 특화되어 새로운 데이터에 대한 일반화가 어려워졌습니다.
  5. 의식 부족: 깊은 신경망을 훈련하는 방법을 이해하지 못했고, 연구자들은 이러한 문제를 해결하는 방법을 알지 못했습니다.
  6. 컴퓨팅 복잡도: 깊은 신경망을 훈련하는 것은 컴퓨팅 복잡도였고, 층의 수가 증가하면 컴퓨팅 요구 사항이 지수적으로 증가했습니다.
  7. 최적화 알고리즘: 당시 사용된 최적화 알고리즘, 즉 경사 하강법 등은 깊은 신경망을 훈련하는 데 적합하지 않았습니다.

과거의 신경망이 층의 수가 증가하는 것을 시도했을 때 직면한 주요 문제는 다음과 같습니다.

  1. 그레이디언트 반응: 층의 수가 증가하면 백프로파게이션 중에 사용되는 그레이디언트가 사라지게 되었습니다.
  2. 폭발 그레이디언트: 층의 수가 증가하면 백프로파게이션 중에 사용되는 그레이디언트가 폭발하게 되었습니다.
  3. 오버피팅: 층의 수가 증가하면 일반화가 어려워지게 되었습니다.

이러한 문제를 해결하기 위해 연구자들은 새로운 기술을 개발했습니다.

  1. 배치 정규화: 각 층의 입력을 정규화하여 내부 공변량 이동을 줄이고 훈련 프로세스의 안정성을 향상했습니다.
  2. ReLU 활성화: ReLU( Rectified Linear Unit) 활성화를 사용하여 네트워크에 비선형성을 추가하고 복잡한 관계를 학습하는 능력을 향상했습니다.
  3. 드롭아웃: 훈련 중에 랜덤하게 뉴런을 삭제하여 오버피팅을 방지하고 네트워크의 일반화 능력을 향상했습니다.
  4. 전활성 잔차(Pre-Activation Residuals): 전활성 잔차를 사용하여 반응 그레이디언트 문제를 완화하고 훈련 프로세스를 향상했습니다.
  5. 잔차 연결(Residual Connections): 잔차 연결을 사용하여 반응 그레이디언트 문제를 완화하고 훈련 프로세스를 향상했습니다.

이러한 기술, 컴퓨팅 파워, 데이터 크기, 최적화 알고리즘의 발전으로 인해 많은 층을 가진 깊은 신경망을 개발할 수 있었습니다.


결국 마지막에 열거해 놓은 5가지에 대해서 뭔가 파고 들어가 봐야 도무지 어떤 것이 신경망의 부활을 가져왔는지 확실히 알 수 있게 되는 거다.

시간을 두고 알아보자.