12. Applications

이 장에서는 심층 학습의 활용을 다룬다.

12.1. Large-Scale Deep Learning

기계 학습에서 뉴런의 수가 많아야 한다는 것은 중요하다. 그러므로 기계 학습은 고성능 하드웨어와 소프트웨어 인프라를 필요로 한다.

12.1.1. Fast CPU Implementations

요즘은 신경망은 GPU나 많은 기계들이 협업하는 CPU를 쓴다. 캐시 미스를 위한 자료구조 최적화, 정수/양수의 선택 모두가 큰 영향을 끼칠 수 있다.

12.1.2. GPU Implementation

많은 기계 학습 구현은 GPU에 의존한다. 이는 쉽게 병렬화 가능한 단순 계산들이므로 많은 병렬화와 메모리 대역폭을 필요로 하지만, CPU에 비해 클락 속도와 브랜칭 용량은 더 적다. 신경망에 필요한 계산은 이런 계산들이다. GPU는 본래는 그래픽 작업에만 특화되었으나, 신경망에도 적용되는 범용 GPU가 등장하였다. 이 경우 메모리 연산은 응구현은 GPU에 의존한다. 이는 쉽게 병렬화 가능한 단순 계산들이므로 많은 병렬화와 메모리 대역폭을 필요로 하지만, CPU에 비해 클락 속도와 브랜칭 용량은 더 적다. 신경망에 필요한 계산은 이런 계산들이다. GPU는 본래는 그래픽 작업에만 특화되었으나, 신경망에도 적용되는 범용 GPU가 등장하였다. 이 경우 메모리 연산은 합병될 수록 더 빨라진다. 대신 브랜칭은 더 어려워진다. 스레드는 워프라는 작은 그룹으로 나뉘어 각 워프의 스레드는 각 사이클 내에서 같은 명령어를 실행한다. 고성능 GPU 코드를 쓰기는 어렵기 때문에 연구자들은 GPU 코드에 맞춤형으로 코드를 쓰고 GPU 코드는 존재하는 라이브러리를 사용한다.

12.1.3. Large-Scale Distributed Implementations

학습과 추론을 위한 계산량을 많은 기기에 분배하기도 한다. 추론은 쉬운데, 각 표본을 각 기기에 분산하면 되기 때문이다. 이를 데이터 병렬화라 한다. 모델의 다른 부분을 각 기기에 분산하는 모델 병렬화도 가능하다. 그러나 학습 시의 데이터 병렬화는 조금 더 어렵다. 경사 하강법은 일반적으로 순차적 알고리즘이기 때문에, 비동기 추계적 경사 하강법을 사용한다. 이 경우 여러 프로세스 코어가 매개변수를 읽어 경사를 계산해 매개변수를 락 없이 증가시킨다. 매개변수를 공유 메모리가 아닌 매개변수 서버에 두고 이를 활용할 수도 있다.

12.1.4. Model Compression

많은 상업적 용례에서 기계 학습 모델의 추론 시 시간/메모리 비용이 적은 것이 중요하다. 개인화가 필요 없으면 모델을 한 번만 학습하고 배포하는 것이 낫다. 추론의 비용을 줄이는 핵심 방법은 더 적은 메모리와 시간을 들이는 모델로 바꾸는 모델 압축이다. 이는 원본 모델의 크기가 과적합 방지로 인해 커졌을 때 발생한다. 이 큰 모델들이 함수를 학습하고 나면 무작위 표본 x로부터 학습 집합을 무한대로 만들어낼 수 있다. 원본 학습 표본에 대해 더 작은 모델을 학습시킬 수도 있다.

12.1.5. Dynamic Structure

데이터 처리 시스템을 가속시키는 방법은 입력을 처리하는 계산 그래프에 대한 동적 구조를 만드는 것이다. 이는 조건적 계산이라고 하기도 한다. 추론을 가속하기 위한 전략으론 여러 단계의 분류기를 쓰는 폭포수형 분류기를 쓰기도 한다. 결정 트리는 동적 구조의 예로, 각 트리의 노드는 어떤 부분 트리가 각 입력에 대해 평가되어야 하는지를 결정하기 때문이다. 똑같이, 게이터라 불리는 신경망을 이용해 여러 전문가 네트워크 중 어떤 것을 써야 하는지를 결정할 수 있다. 이의 첫 발상은 전문가의 혼합으로 전문가마다 가중치를 두고 이에 대한 가중치합으로 출력을 결정하는 방법이었다. 이 때 게이터에 의해 하나의 전문가가 선택될 경우를 강한 전문가 혼합이라 이야기했다. 다른 동적 구조는 스위치로, 은닉 유닛이 맥락에 의존하는 다른 유닛을 받는 것이다. 그러나 강한 스위치는 대형 애플리케이션에서 효율적이라고 입증되지 않았다. 동적 구조의 문제점은 서로 다른 입력에 대해 서로 다른 코드 브랜치를 타게 됨으로써 생기는 병렬화의 감소이다.

12.1.6. Specialized Hardware Implementation of Deep Networks

신경망 연구 이후에, 하드웨어 설계자들은 신경망 알고리즘의 학습과 추론을 더 가속시킬 수 있는 하드웨어 구현에 몰두하였다. 특별한 하드웨어의 서로 다른 형태와 FPGA가 개발되었다. GPU에서는 32비트나 64비트 부동 소수점을 사용하지만, 사실 더 적은 정밀도를 사용하는 것이 더 빠르다. 최근 역전파 기반 신경망의 저정밀도 구현은 8~16비트 정밀도만으로도 역전파 신경망을 사용하거나 학습하는 데 충분하다는 것이다.

12.2. Computer Vision

컴퓨터 비전은 심층 학습 용례에서 가장 활성화된 연구 영역일 것이다. 이는 이미지 처리 등 다양한 영역에 쓰이는 분야이다.

12.2.1. Preprocessing

많은 영역은 데이터에 대한 복잡한 전처리를 요구한다. 데이터 증강은 학습 집합만을 전처리하는 방법일 것이다. 다른 전처리들은 학습 집합과 테스트 집합 모두에 적용될 수 있다.

12.2.1.1. Contrast Normalization

많은 작업에서 안전하게 삭제될 수 있는 분산은 이미지의 명암이다. 이는 전역 명암 표준화(GCN)를 이용해 표준화된다. 관심 있는 물체로 잘라내어진 큰 이미지들로 이루어진 데이터셋들에 이를 이용할 수 있다. 이 때 스케일 인자는 대개 1로 세팅된다. 표준편차는 단지 이미지의 L^{2} 노름을 리스케일링한 것이다. 스피어링(화이트닝)이라는 전처리 과정도 있는데 이건 주성분의 분산을 똑같이 맞추는 것이다. 전역 명암 표준화는 구석 등의 이미지 특성들을 잡기 힘들어하기도 하는데, 이를 위해 지역 명암 표준화를 하기도 한다. 이는 여러 정으가 가능하며, 분리 가능한 컨볼루션 등으로 구현된다. 이는 은닉층의 비선형 연산으로 쓰이기도 한다. 전역 명암 표준화와 지역 명암 표준화는 모두 정규화가 필요하다.

12.2.1.2. Dataset Augmentation

분류기의 일반화를 위해서는 학습 표본에 클래스를 변경하지 않는 변환을 해 학습 집합의 크기를 불리는 것이 효과적이다.

12.3. Speech Recognition

음성 인식 중 자동 음성 인식(ASR)은 음성 수열이 주어졌을 때 가장 가능성 높은 언어 수열을 계산해내는 것이다. 초기에는 GMM-HMM 모델이 대세였으나 신경망이 이를 대체하였다. 이 때 비지도 사전학습 부분은 효과가 별로 없는 것으로 드러났다. 신경망과 컨볼루션 신경망, LSTM RNN 등은 HMM을 완전히 밀어내었다.

12.4. Natural Language Processing

자연어 처리(NLP)는 컴퓨터에 의한 인간 언어의 사용이다. 많은 신경망 기법은 자연어 처리에 성공적으로 적용되었다.

12.4.1. n-grams

언어 모델은 자연어의 토큰 열에 대한 확률 분포를 정의한다. n그램에 기반한 모델은 앞의 n – 1 토큰에 기반한 n번째 토큰의 조건부 분포를 정의한다. n그램 모델을 학습하는 것은 간단하며, n = 1때는 유니그램, n = 2일 때는 바이그램, n = 3일 때는 트리그램이라 한다. P_{n}이나 P_{n-1}이 0일 때 발생하는 나쁜 경우를 막기 위해 분자/분모에 1을 더하는 다듬질과 빈도가 낮을 때 저차수 n-그램을 보는 백오프 방식을 수행한다. 일반적인 n-그램 모델은 차원의 저주에 취약하므로 클래스 기반 언어 모델을 사용하기도 한다.

12.4.2. Natural Language Models

자연어 모델(NLMs)은 자연어 수열들을 언어의 분산 표현으로 사용할 때의 차원의 저주 문제를 풀기 위해 설계된 언어 모델이다. 이는 언어 껴묻기 등의 기법을 사용한다. 다른 영역의 신경망 또한 껴묻기를 사용한다. 분산 표현으로 자연어 처리 모델을 개선시키는 것은 신경망에 한정되어 있지 않다.

12.4.3. High-Dimensional Outputs

많은 자연어 애플리케이션에서, 문자 대신 단어들을 출력하고 싶을 수 있다. 하지만 이 경우 소프트맥스를 쓰면 계산량이 너무 많아진다.

12.4.3.1. Use of a Short List

이를 대처하기 위해 어휘들을 많은 빈번한 단어들의 리스트인 숏리스트로 제한해 계산하고는 한다. 하지만 명백한 단점은 숏리스트 내의 단어들로 표현력이 제한된다는 것이다.

12.4.3.2. Hierarchical Softmax

어휘 집합이 클 때 고차원 출력에 따른 계산량을 줄이는 또 다른 방법은 조건부확률을 계층화하는 것이다. 이는 단어의 카테고리를 중첩해서 분류하는 것으로 볼 수 있다. 이 경우 트리의 각 노드에 로지스틱 회귀를 적용해 같은 컨텍스트를 입력하는 것이다. 로그 가능도가 더 쉽게 계산될 수 있으므로 경사도 더 쉽게 계산할 수 있다. 계산량을 줄이기 위해 트리 구조 자체도 최적화할수 있으나 실용적이진 않다. 단어 클래스나 단어 계층을 어떻게 정의하는지에 대한 문제는 열린 문제이다. 계층 소프트맥스의 중요한 이점은 학습 시점과 테스트 시점 모두에 대한 계산 이득을 준다는 것이다. 물론, 모든 단어의 확률을 계산하는 것은 여전히 비싸고, 트리 구조가 이 경우에 이점을 주지도 않는다. 또한, 정확도 자체도 더 떨어진다.

12.4.3.3. Importance Sampling

자연어 모델의 학습속도를 높이는 법은 모든 단어에 대한 경사를 계산하지 말고 특정 단어들만 샘플링하는 것이다. 이 때 경사는 \frac{\partial \log P(y | C)}{\partial \theta} = \frac{\partial a_{y}}{\partial \theta} - \sum_{i} P(y = i | C) \frac{\partial a_{i}}{\partial \theta}로 계산되는데, 첫 항은 양성상, 둘째 항은 음성상이라 한다. 모델이 아니라 다른 분포에서 샘플링할 수도 있는데 이는 중요도 샘플링의 일종이다. 이 때 중요도 가중치를 1로 표준화한 것을 편향 중요도 샘플링이라 한다. 이는 단어 가방처럼 출력의 희박 벡터일 때 특히 유용하다. 어떤 경우든, 경사 추정의 계산 복잡도는 출력 벡터의 크기가 아닌 부정 표본의 크기에 비례하게 된다.

12.4.3.4. Noise-Contrastive Estimation and Ranking Loss

또 다른 예로 자연어 모델의 출력의 손실 함수를 정답 단어와 예측한 단어의 순위차로 쓰는 경우도 있다. 이의 자연어 처리에 대한 최근 적용례는 비대조적 추정이다.

12.4.4. Combining Neural Language Models with n-grams

n-그램 모델의 신경망에 대한 이득은 모델에 대한 처리가 거의 필요없이 큰 모델 용량을 얻는다는 것이다. 하나의 방법으로는 신경망과 n-그램 언어 모델을 앙상블하는 모델을 만들 수 있다.

12.4.5. Neural Machine Translation

기계 번역은 한 자연어로 쓰인 문장을 읽어 같은 뜻을 가진 다른 언어의 문장을 내는 것이다. 최초에는 최대 엔트로피 언어 모델이 쓰였다. 전통적인 언어 모델은 자연어 문장의 확률만을 계산했지만, 이의 단점은 언어열이 고정 길이로 전처리되어야 한다는 단점이 있었다. 그래서 RNN과 컨볼루션이 결합되어 쓰이기 시작했다.

12.4.5.1. Using an Attention Mechanism and Aligning Pieces of Data

더 효율적인 방법은 전체 문장이나 문단을 읽어 번역된 단어들을 한 번에 하나씩, 입력 문장의 서로 다른 부분에 집중해서 다음 단어를 만드는 데 필요한 의미적 디테일을 생성하는 것이다. 한 언어로 쓰인 문장의 단어가 다른 언어로 쓰인 번역된 문장의 대응되는 단어와 엮여 있을 때는, 대응되는 단어 끼워넣기도 엮는 것이 가능하다.

12.4.6. Historical Perspective

상징의 분산 표현식은 신경망 역전파가 처음 발견되었을 즈음 도입되었다. 상징 끼워넣기의 아이디어는 단어 끼워넣기로 확장되었고, 이는 신경망의 도입으로 인해 더더욱 발전하였다. 자연어 모델의 아이디어는 언어 모델링 성능을 개선시켰으며 여러 자연어 처리 애플리케이션으로 확장되었다.

12.5. Other Applications

다른 적용례를 알아보자.

12.5.1. Recommender Systems

기계학습의 정보공학에 대한 가장 주된 적용례는 잠재적 사용자나 소비자에 대한 추천을 하는 것이다. 두 가지로 나누면 온라인 광고나 아이템 추천 등이 있다. 이런 연관 문제는 지도 학습 문제처럼 볼 수도 있으며 적은 정보로 추천을 하는 협업 필터링이 초기에 유행하였다. 그러나 새 사용자나 새 상품이 입고되었을 때는 협업 필터링은 한계가 있으므로 사용자 프로필이나 아이템의 특성을 이용하고는 했다. 이런 것을 내용 기반 추천 시스템이라 한다. 풍부한 맥락으로부터 특성을 추출하기 위해서는 컨볼루션 망과 같은 특별한 심층 학습 구조가 쓰이곤 했다.

12.5.1.1. Exploration versus Exploitation

많은 추천 문제는 강화 학습의 맥락 강도 문제로 여겨지기도 한다. 강화 학습은 정책 기반으로 탐색이용간 트레이드오프를 하는 것이다. 이용은 현 최고 정책을 따르는 것이고 탐색은 다른 정책을 탐색하는 것이다. 탐색은 무작위 정책을 선택할 수도 있고 현 정책에서 약간 다른 정책을 선택할 수 있다. 정책과 탐색 간 무엇을 선호해야 할지는 여러 인자이 달렸다. 지도학습에는 이런 트레이드오프가 없다. 또한, 강화학습에서는 여러 정책을 비교하고 평가하는 것이 어렵다는 것이다.

12.5.2. Knowledge Representation, Reasoning and Question Answering

심층 학습을 통한 지식 표현, 추론 및 질문에 대한 답에도 매우 성공적이었다.

12.5.2.1. Knowledge, Relations and Question Answering

하나의 흥미로운 연구는 두 엔티티간 관계를 배우는 것이다. 이는 수학적으론 이진 관계로 표현된다. 인공 지능의 문맥에서는 특성을 정의해 활용할 수 있다. 이를 활용한 자료구조는 관계형 데이터베이스의 일종인 지식 베이스를 활용한다. 학습 데이터에 추가로, 학습할 모델 족을 정의한다. 이런 모델의 단기적 실용례는 지식 그래프의 연결을 추론하는 연결 예측이다. 이런 모델을 평가하는 것은 어려운데 긍정 표본엔티티간 관계를 배우는 것이다. 이는 수학적으론 이진 관계로 표현된다. 인공 지능의 문맥에서는 특성을 정의해 활용할 수 있다. 이를 활용한 자료구조는 관계형 데이터베이스의 일종인 지식 베이스를 활용한다. 학습 데이터에 추가로, 학습할 모델 족을 정의한다. 이런 모델의 단기적 실용례는 지식 그래프의 연결을 추론하는 연결 예측이다. 이런 모델을 평가하는 것은 어려운데 긍정 표본의 데이터셋만 가지고 있기 때문이다. 지식 기반 그리고 분산 표현의 또 다른 적용례는 단어의 어떤 의미가 어떤 문맥에 어울리는지를 판정하는 단어 의미 구별이다. 추론 과정과 결합된 관계 지식과 자연어에 대한 이해는 일반적으로 문제에 답하는 시스템을 만들게 했다. 기계 학습은 다른 여러 부부에도 적용되고 있다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중