인공지능에 대한 기대
지난 몇 년간 인공지능은 미디어에서 경쟁적으로 보도하는 주제였으며, AI가 수행할 미래는 이따금 어둡게 그려질 때도, 유토피아처럼 그려지기도 했다. 우리는 이 책을 통해 AI 에이전트를 개발할 수 있는 사람들 중 하나가 될 것이고 첫번째 장에서 인공지능과 머신 러닝, 딥러닝에 대한 필수적인 개념을 소개한다.
초기 인공지능 분야에 대한 간결한 정의는 보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구 활동이었다. 오랜 기간 동안 많은 전문가는 프로그래머들이 명시적인 규칙을 충분히 많이 만들어 데이터를 다루면 인간 수준의 인공지능을 만들 수 있다고 믿었으나 이미지 분류, 음성 인식, 언어 번역과 같은 불분명한 문제를 해결하기 위한 명확한 규칙체계를 찾는 것은 사실상 불가능하였으며 이를 대체하기 위한 새로운 방법으로 머신러닝
이 등장하였다.
컴퓨터가 유용한 작업을 하도록 만드는 일반적인 방법은 프로그래머가 입력 데이터를 적절한 해답으로 바꾸기 위해 따라야 하는 규칙을 작성하는 것이다. 머신러닝 시스템은 명시적으로 프로그램 되는 것이 아니라 훈련(training)
된다. 어떤 작업과 관련된 많은 샘플들을 제공하면 이 샘플들에서 통계적 구조를 찾아 그 작업을 자동화하기 위한 규칙을 만들어낸다.
머신러닝은 1990년도 부터 각광을 받았지만, 고성능 하드웨어와 대량의 데이터셋의 구축이 가능해지면서 AI는 현재 가장 인기있고 성공적인 분야가 되었다. 머신러닝은 수리 통계학과 밀접하게 관련되어 있지만 통계학과 다른 점이 있다.
머신러닝, 특히 딥러닝은 수학적 이론이 부족하고 근본적으로 엔지니어링 분야에 해당된다. 논리를 철저하게 따르는 수학, 물리학과 달리 경험적 발견에 의해 주도되는 매우 실천적인 분야이며 소프트웨어 및 하드웨어의 발전에 크게 의존한다.
머신러닝은 샘플과 기댓값이 주어졌을 때 데이터 처리 작업을 위한 실행 규칙을 찾는 것이다. 이러한 과정을 성공하기 위해 세 가지가 필요하다.
학습(learning)
이라고 한다.딥러닝은 머신 러닝의 특정한 한 분야로, 연속된 층(layer)에서 점진적으로 의미 있는 표현을 배우는 데 강점이 있다. 딥(deep)
은 단순히 연속된 층으로 표현을 학습한다는 개념을 나타낸다. 그러므로 딥러닝은 층 기반 표현 학습
또는 계층적 표현 학습
이 될 수 있다.
딥러닝에 대해 잘못 알려진 사실은 딥러닝의 층 기반 학습이 뇌를 모방했다는 주장이다. 인간의 정신 세계와 같은 신비하고 미스터리한 구조를 가지지 않으며 우리가 다루는 딥러닝은 그냥 데이터로부터 표현을 학습하는 수학 모델일 뿐입니다.
딥러닝 알고리즘으로 학습된 표현은 다음과 같이 나타난다. 층을 지나면서 점점 더 다른 표현으로 숫자 이미지가 변환된다. 심층 신경망을 정보가 연속된 필터를 통과하면서 특정한 작업에 유용하게 정제되는 다단계 정보 추출 과정이라고 생각할 수 있다.
층이 입력 데이터를 처리하는 방식은 일련의 숫자로 이루어진 층의 가중치(weight)에 저장되어 있다. 이런 맥락으로 학습은 주어진 입력을 정확한 타깃에 매핑하기 위해 신경망의 모든 층에 있는 가중치 값을 찾는 것을 의미한다.
신경망의 출력을 기대하는 것으로 얻기 위해서는 출력이 기대보다 얼마나 벗어났는지 측정해야한다. 이는 신경망의 손실함수(loss function)
가 담당하는 일이다. (목적함수 or 비용함수)
기본적인 딥러닝 방식은 이 점수를 피드백 신호로 사용하여 현재 샘플의 손실 점수가 감소되는 방향으로 가중치 값을 조금씩 수정하는 것이다. 이러한 수정과정은 딥러닝의 핵심 알고리즘인 역전파 알고리즘
을 구현한 옵티마이저(optimizer)
가 담당한다.
초기에는 네트워크의 가중치가 랜덤한 값으로 할당되며, 자연스러버게 첫 출력은 기대한 것과 굉장히 차이가 크다. 하지만 네트워크가 모든 샘플들을 처리하며, 역전파과정을 진행하면 가중치가 조금씩 올바른 방향으로 조정되고 손실 점수가 감소한다. 이를 훈련반복(learning loop)
이라고 하며, 충분한 횟수만큼 반복하면 손실함수가 최소가 되는 가중치 값을 산출 가능하다.
딥 러닝은 전천후인가?
딥러닝은 AI 역사에서 찾을 수 없을 만큼 대중에게 많은 관심과 업계의 투자를 받고 있으나 오늘날 산업계에서 사용하는 대부분의 머신 러닝 알고리즘은 딥러닝 알고리즘이 아니다. 딥러닝으로 모든 문제를 풀 수 있는 것이 아니기 때문에 우리는 다른 방법들을 배우고 가능할 때 이 기술을 연습해야 한다.
확률적 모델링(probabilistic modeling)은 통계학 이론을 데이터 분석에 응용한 것이다. 가장 잘 알려진 알고리즘으로는 나이브 베이즈 알고리즘이 존재한다. 나이브 베이즈의 가장 큰 특징은 입력 데이터의 특성이 모두 독립적이라고 가정하는 것이다. 이와 밀접하게 연관된 모델로는 로지스틱 회귀(logistic regression)
가 있다. (분류 알고리즘)
초창기 신경망의 경우 이 책에서 다루는 최신 구조로 전부 완전히 대체되었다. 80년대 중반 여러 사람이 제각기 역전파 알고리즘을 재발견하고 신경망에 이를 적용하기 시작하였고, 경사 하강법 최적화를 사용하여 연쇄적으로 변수가 연결된 연산을 훈련하는 방법이다.
머신 러닝의 새로운 접근 방법인 커널 방법이 인기를 얻자 초창기 신경망은 빠르게 잊혀졌다. 커널 방법은 분류 알고리즘의 한 종류를 말하며, 가장 유명한 것으로 서포트 벡터 머신(SVM)
이 있다.
SVM은 두 클래스를 나누는 결정 경계를 찾는 분류 알고리즘이다. 이 알고리즘은 두 단계로 하여금 결정 경계를 찾는다.
마진 최대화(margin maximization)
이라고 부른다.SVM은 간단한 분류 문제에 대해 최고 수준의 성능을 달성하였지만, 대용량의 데이터셋에 확장되기 어려우며 이미지 분류와 같은 지각에 관련된 문제에서 성능이 좋지 않았다. 그러한 이유로는, SVM은 얕은 학습 방법이기 때문에 이미지 지각에 관련된 문제에 적용하기 위해서는 수동으로 유용한 표현을 추출해야 하는데(특성공학(feature engineering)
)이는 이미지에서 인간이 직접 추출하기에 굉장히 어렵고 불안정하다.
결정트리
는 플로차트와 같은 구조를 보여주며, 입력 데이터 포인트를 분류하여 주어진 입력에 대해 출력 값을 예측한다. 결정 트리는 시각화가능하고 이해가 쉽다. 랜덤 포레스트(random forest)
알고리즘은 결정트리 학습에 기초로 서로 다른 결정 트리를 많이 만들고 그 출력을 앙상블하는 방법을 사용한다. 그레이디언트 부스팅 머신(gradient boosting machine)
또한 결정 트리를 앙상블하는 것을 기반으로 이전 모델에서 놓친 데이터 포인트를 보완하는 새로운 모델을 반복적으로 훈련함으로 모델을 향상시킨다.
딥러닝이 이렇게 빠르게 확산된 주된 이유는 많은 문제에서 더 좋은 성능을 내고 있기 때문이다. 성능적인 측면 이외에 머신 러닝에서 가장 중요한 단계인 특성공학
을 완전히 자동화한다. 머신러닝 워크플로를 매우 단순화 시켜주므로 고도의 다단계 작업 과정을 하나의 간단한 앤드-투-앤드 딥러닝 모델로 대체 가능하다.
그럼에도 전천후가 아닌 이유는 딥러닝은 일단 성능의 근거에 있어 경험적인 제시를 하는 것이 대부분이며, 항상 앤드-투-앤드의 방식이 효율적이지 않기 때문이다. 또한 하드웨어의 필요 용량또한 다르다.
End-to-end
앤드-투-앤드는 처음부터 끝까지라는 뜻으로 딥러닝은 앤드-투-앤드 딥러닝으로도 불린다. 즉 입력에서 출력까지 파이프라인 네트워크 없이 한번에 처리한다는 뜻이다. 즉 여러개의 네트워크의 조합이 아닌 하나의 네트워크로 문제를 해결할 수 있다는 뜻이다.