핵심 개념 리뷰
AI를 위한 여러 방법
- 딥러닝은 AI나 머신 러닝과 동의어가 아니다. 인공 지능은 역사가 깊고 광범위한 분야로 일반적으로 인지 과정을 자동화 하기 위한 모든 방법을 말한다. 다른 말로 하면 사고의 자동화이다.
- 엑셀의 스프레드시트처럼 단순한 것부터 휴머노이드 로봇 같이 고수준인 것까지 해당된다.
- 머신 러닝은 훈련 데이터를 사용하여 자동으로 프로그램(모델이라 부른다)을 개발하는 AI의 특정 하위 분야이다.
- 데이터를 프로그램으로 바꾸는 과정을 학습이라 부른다.
- 머신 러닝 역사는 오래됐지만 1990년대 들어서 각광 받기 시작했다.
- 딥러닝은 머신 러닝의 여러 종류 중 하나이다. 기하학적 변환 함수들이 번갈아 가며 연속적으로 길게 연결된 모델이다. 이 연산들은 층이란 모듈을 구성한다.
- 전형적인 딥러닝 모델은 층을 쌓아 올린 것이다. 더 일반적으로 말하면 층의 그래프이다.
- 층은 훈련하는 동안 학습되는 가중치 파라미터를 가진다. 이 가중치에 모델의 지식이 저장된다. 학습 과정은 좋은 가중치를 찾는 것이다.
- 딥러닝이 여러 머신 러닝 방법 중 하나일 뿐이지만 다른 방법들과 대등한 위치에 있지 않다. 딥러닝은 큰 성공을 거두었다.
머신 러닝 분야에서 딥러닝이 특별한 이유
- 불과 몇 년 만에 딥러닝은 역사적으로 컴퓨터에서 매우 어렵다고 인식된 다양한 종류의 문제에서 큰 성과를 거두었다. 특히 이미지, 비디오, 사운드 등에서 유용한 정보를 추출하는 기계 인지 (machine perception) 분야이다.
- 충분한 훈련 데이터(특히 사람이 적절히 레이블링한 훈련 데이터)가 주어지면 사람이 인식하는 거의 모든 것을 데이터에서 추출할 수 있다.
- 이런 문제로 딥러닝이 지각 문제를 해결한다고 이야기하는데, 사실 지각을 아주 좁게 정의했을 때만 맞다.
- (딥러닝 미래 전망 생략)
딥러닝에 대하여
- 딥러닝에서 가장 놀라운 점은 단순함에 있다. 10년 전에는 경사 하강법으로 파라미터 기반의 단순한 모델을 훈련하여 기계 인지 문제에 놀라운 성과를 달성하리라 예상한 사람은 없지만 이제는 경사 하강법으로 충분히 큰 모두 모델을 충py분히 많은 샘플에서 훈련하는 것이 필요한 전부라는 것을 안다.
- 딥러닝에서 모든 것은 벡터이다. 모두가 기하학적 공간에 놓인 하나의 포인트이다.
- 모델 입력과 타깃이 먼저 벡터로 바뀌어야 한다. 초기 입력 벡터 공간과 타깃 벡터 공간으로 바꾸는 것이다. 딥러닝 모델의 각 층은 데이터에 간단한 기하학적 변화을 수행하여 통과시킨다.
- 모델은 층을 연결하여 복잡한 기하학적 변환을 구성한다. 잘게 쪼개어보면 단순한 변환이 연결되어 있다.
- 이런 복잡한 변환이 입력 공간을 타깃 공간으로 한 번에 하나의 포인트씩 매핑한다. 변환을 결정한느 파라미터는 층의 가중치이다. 모델이 얼마나 잘 작동하는지를 기반으로 반복적으로 업데이트 된다.
- 기하학적 변환의 핵심 특징은 미분 가능해야 한다는 점이다. 경사 하강법으로 파라미터를 학습하기 위해 필수적이다. 이 말은 입력에서 출력으로 바뀌는 기하학적 변환이 부드럽고 연속적이어야 한다는 뜻이다. 이는 아주 큰 제약 사항이다.
- 복잡한 기하학적 변환을 입력 데이터에 적용하는 전체 과정은 사람이 뭉쳐진 종이 공을 펼치는 것과 비슷하다. 뭉쳐진 종이 공은 모델이 처음 보게 되는 입력 데이터의 매니폴드이다.
- 사람이 종이 공을 펼치는 움직임이 각 층에서 수행되는 간단한 기하학적 변환과 비슷하다. 종이 공을 펼치는 전체 손놀림은 모델 전체의 복잡한 변환이 된다.
- 딥러닝 모델은 고차원 데이터의 복잡한 매니폴드를 펼치는 수학 장치이다.
- 이것이 딥러닝의 마술 같은 기법이다. 데이터가 가진 의미를 벡터와 기하학적 공간으로 변환한 후 공간에서 다른 공간으로 매핑하는 복잡한 기하학적 변환을 점진적으로 학습한다. 원본 데이터게 있는 모든 형태의 관계를 찾기 위해 충분히 큰 고차원 공간이 필요한 전부이다.
- 모든 것이 하나의 핵심 아이디어에서 출발한다.
- 의미는 어떤 두 가지 사이 관계에서 유도되고 이 관계는 거리 함수로 측정할 수 있다. 우리의 뇌가 기하학적 공간을 통해 의미를 해석하는지 여부는 완전히 다른 이야기다. 벡터 공간은 컴퓨터 입장에서는 계산하기 매우 효율적이다.
- 지능을 표현하기 위해서는 그래프 같은 다른 데이터 구조가 더 좋다. 신경망은 초기에 그래프를 사용하여 의미를 인코딩하려는 아이디어에서 시작되었다. 이것이 신경망(neural network)이란 이름으로 부르게 된 이유이다. 다른 연구 분야에서는 연결주의(connectionism)이란 이름으로 부르기도 한다.
- 요즘 신경망이란 이름은 역사적인 이유로만 남아 있다. 신경이나 네트워크와 관련되어 있지 않기 때문에 오해를 일으키기 쉬운 이름이다.
- 특히 신경망은 뇌와 아무런 관련이 없다. 좀 더 적절한 이름은 층 기반 표현 학습(layered representations learning)이나 계층적 표현 학습(hierarchical representations learning)이다.
- 또는 연속하여 기하학적 공간을 조작한다는 핵심 사실을 강조하기 위해 심층 미분 모델(deep differentiable model)이나 기하학적 변환 연결(chained geometric transform)도 가능하다.
핵심 기술
- 딥러닝은 다음과 같은 많은 요인들이 누적되어 만들어진 결과이다.
- 알고리즘 혁심이 계속 늘어난다. 처음에 역전파를 개발한 이후 20년이 걸렸지만, 2012년 이후 많은 연구자가 딥러닝에 참여하여 갈수록 더 빨라지고 있다.
- 지각에 관련된 많은 양의 데이터를 사용할 수 있다. 충분히 많은 데이터에서 충분히 큰 모델을 훈련하는 것이 필요한 전부이다. 이는 인터넷의 성장과 무어의 법칙이 적용된 저장 매체 덕분이다.
- 고성능 병렬 컴퓨터 하드웨어를 값싸게 사용할 수 있다. NVIDIA에서 만든 GPU는 게임을 위한 장치였지만 딥러닝을 위해 새롭게 디자인 되었다.
- 이런 컴퓨팅 파워를 활용할 수 있는 다양한 소프트웨어 스택(stack)이 마련되었다. CUDA 라이브러리, 자동 미분을 수행하는 텐서플로 같은 프레임워크, 딥러닝을 쉽게 사용하도록 도와주는 케라스 등이다.
일반적인 머신 러닝 작업 흐름