페이지

2022년 7월 16일 토요일

1.3.2 데이터

 이따름 AI는 새로운 산업 혁명으로 불립니다. 딥러닝이 이 혁명의 증기 기관이라면 데이터는 이 기관에 필요한 연료입니다. 인공 지능이란 기관을 움직이는 원료가 없으면 어떤 것도 불가능합니다. 데이터에 관해서라면 지난 20년간 (무어의 법칙(Moore's law)에 따라) 저장 장치의 급격한 발전과 더불어, 머신 러닝을 위한 대량의 데이터 셋을 수집하고 배포할 수 있는 인터넷 성장이 시장의 판도를 바꾸었습니다. 요즘 큰 규모의 회사들이 사용하는 이미지 데이터셋, 비디오 데이터셋, 자영어 데이터 셋은 이넡넷 없이는 수집할 수 없습니다. 예를 들어 플러커(Flicker)에서 사용자가 붙인 이미지 태그는 컴퓨터 비전의 입장에서는 보물 같은 데이터입니다. 유튜브(YouTube)비디오도 마찬가지 입니다. 위키피디아(Wikipeida)는 자연어 처리 분야에 필요한 핵심 데이터셋입니다.

딥러닝의 성장을 이끈 촉매제와 같은 데이터셋 하나를 꼽는다면, 바로 1,400만 개의 이미지를 1,000개의 범주로 구분해 놓은 ImageNet 데이터셋입니다(하나의 이미지는 하나의 범주를 가집니다). ImageNet이 특별한 것은 크기만이 아니라 이와 연계되어 매년 열린 경연대회입니다.

캐글이 2010년에 선보인 후 공개 경연 대회는 연구자들과 기술자들이 한계를 뛰어넘도록 만드는 아주 훌륭한 도구가 되었습니다. 연구자들이 경쟁하기 위한 일반적인 기준이 있다는 것 역시 최근 딥러닝의 성장에 큰 도움을 주었습니다.

1.3.1 하드웨어

 시중에 판매되는 CPU는 1990녀과 2010년 사이에 거의 5,000배가 빨라졌습니다. 그 덕에 요즘에는 노트북에서도 작은 딥러닝 모델을 실행시킬 수 있습니다. 25년 전이라면 현실적으로 불가능 했던 일입니다.

하지만 컴퓨터 비전이나 음성 인식에서 사용되는 일반적인 딥러닝 모델들은 노트북보다 10배의 계산 능력이 필요합니다. 2000년대에 NVIDIA와 AMD 같은 회사들이 실사와 같은 비디오 게임의 그래픽 성능을 높이기 위해 대용량 고속 병렬 칩(그래픽 처리장치(GPU))을 개발하는 데 수십억 달러를 투자해 왔습니다. 이런 칩은 ㅂ족잡한 3D 장면을 실시간으로 화면에 그리려는 목적으로만 설계된 저렴한 슈퍼컴퓨터와 같습니다. 2007년 NVIDIA가 자사의 CPU제품을 위한 프로그래밍 인터페이스인 CUDA(https://developer.nvidia.com/about-cuda)를 출시하면서 과학 커뮤니티가 이런 투자의 혜택을 보게 되었습니다. 물리 모델링을 시작으로 다양한 병렬 애플리케이션의 대형 CPU  클러스터가 소량의 GPU로 대체되기 시작했습니다. 대부분 많은 수의 간단한 행렬 곱셈으로 구성된 심충 신경망도 높은 수준으로 병렬화가 가능합니다. 2011년 즈음에 댄 크리슨과 알렉스 크라체브스키 등 일부 연구자들이 CUDA를 사용한 신경망 구현을 만들기 시작했습니다.

게임 시장이 차세대 인공 지능 애플리케이션을 위한 슈퍼컴퓨팅에 투자를 한 셈입니다. 이처럼 이따름 엄청난 일들이 케임에서 시작되곤 합니다. 2015년 말 시세로 1,000달러짜리 게임용 GPU인 NVIDA TITAN X는 6.6테라플롭(TFLOPS)의 단정도 연산 성능을 제공합니다. 즉 초당 6.6조개의 float32 연산을 수행합니다. 이는 최슨 노트북의 성능보다 350배나 빠릅니다. TITTAN X를 사용하면 몇 년 전 ILSVRC 대회에서 우승했던 ImageNet 모델을 며칠 안에 훈련시킬 수 있습니다. 한편 큰 회사들은 NVIDIA Tesla K80처럼 딥러닝을 위해 개발된 GPU 수백 개로 구성된 클러스터에서 딥러닝 모델을 훈련시킵니다. 이런 클러스터의 계산 능력은 최신의 GPU가 없었다면 절대로 불가능했을 것입니다.이에 더하여 딥러닝 산업은 GPU를 넘어서 더 효율적이고 특화된 딥러닝 칩에 추자하기 시작했습니다. 구글은 2016년 I/O연례 행사에서 텐서 처리 장치(Tensor Procesing Init, TPU) 프로젝트를 공개했씁니다. 이 칩은 심층 신경망을 실행하기 위해 완전히 새롭게 설계한 것으로 최고 성능을 가진 GPU 보다 10배 이상 빠르고 에너지 소비도 더 효율적입니다.

1.3 왜 딥러닝일까? 왜 지금일까?

 컴퓨터 비전에 대한 딥러닝의 두 가지 핵심 아이디어인 합성곱 신경망과 역전파는 이미 1989년에 소개되었습니다. 시계열을 위한 딥러닝의 기본인 LSTM(Long Short-Term Memory)알고리즘은 1997년에 개발되었고 그 이후로는 변화가 거의 없습니다. 왜 2013년 이후에 딥러닝이 부상하게 되었을까요? 지난 20년간 어떤 변화가 있었던 것일까요?

일반적으로 세가지 기술적인 힘이 머신 러닝의 진보를 이끌었습니다.

- 하드웨어

- 데이터셋과 벤치마크(banchmark)

- 알고리즘 향상

이 분야는 이론보다 실험을 통해서 성장해 왔기 때문에 새로운 아이디어를 실험할 (또는 종종 기존 아이디어를 확장하기 위해서) 적절한 데이터와 하드웨가 준비되어 있어야만 알고리즘이 발전할 수 있습니다. 머신 러닝은 주로 연필과 종이로 발전되는 수학이나 물리학이 아닙니다. 머신러닝은 하나의 공학(engineering science)입니다.

1990년대와 2000년대에 걸친 진짜 병목은 데이터와 하드웨어였습니다. 하지만 이 기간 동안 인터넷이 시작되었고, 게임 시장이 커지면서 고성능 그래픽 칩이 개발되었습니다.

1.2.7 머신 러닝의 최근 동향

 요즘 머신 러닝 알고리즘과 도고의 동향에 대한 정보를 얻는 좋은 방법은 캐글의 머신 러닝 경연을 살펴보는 것입니다. 매우 치열하게 경재하고 (어떤 대회는 수천 명이 참여하고 상금이 높습니다) 다양한 종류의 머신 러닝 문제를 다루고 있기 때문에 캐글은 좋은 것과 나쁜것을 평가할 수 있는 현실적인 잣대가 됩니다. "어떤 종류의 알고리즘이 경연 대회에서 우승하는 데 도움이 되나요? 상위에 랭크되어 있는 참가자들은 어떤 도구를 사용하나요?

2016년과 2017년 캐글에는 그래디언트 부스팅 머신과 딥러닝의 두 가지 접근 방법이 주류를 이루었습니다. 특시 그래디언트 부스팅은 구조적인 데이터인 경우에 사용되고, 딥러닝은 이미지 분류 같은 지각에 관한 문제에 사용됩니다. 전자의 경우 거의 항상 XGBoost 라이브러리를 사용합니다. 이 라이브러리는 데이터 과학 분야에서 가장 인기 있는 두 언어인 파이썬(Python)과 R을 지원합니다. 딥러닝을 사용하는 대부분의 참가자는 사용하기 쉽고, 유연하며 파이썬을 지원하는 케라스 라이브러리를 사용합니다.

오늘날 머신 러닝을 성공적으로 적용하기 위해 알아야 할 두 가지 기술은 얕은 학습 문제를 위한 그래디언트 부스팅 머신과 지각에 관한 문제를 위한 딥러닝입니다. 기술적으로 보면 캐글 경연대회에서 주로 사용되는 2개의 라이브러리인 XGBoost와 케라스를 배울 필요가 있다는 뜻입니다.

1.2.6 딥러닝의 특징

 딥러닝이 이렇게 빠르게 확산된 주된 이유는 많은 문제에서 더 좋은 성능을 내고 있기 때문입니다. 하지만 그것뿐만이 아닙니다. 딥러닝은 머신 러닝에서 가장 중요한 단계인 특성 공학을 완전히 자동화하기 때문에 문제를 더 해결하기 쉽게 만들어 줍니다.

얕은 학습인 이전의 머신 러닝 기법은 입력 데이터를 고차원 비선형 투영(SVM)이나 결정 트리 같은 간단한 변환을 통해 하나 또는 2개의 연속된 표현 공간으로만 변환합니다. 하지만 복잡한 문제에 필요한 잘 정제된 표현은 일반적으로 이런 방식으로 얻지 못합니다. 이런 머신 러닝 방법들로 처리하기 용의하게 사람이 초기 입력 데이터를 여러 방식으로 변환해야 합니다. 즉 데이터의 좋은 표현을 수동으로 만들어야 합니다. 이를 특성 공학(feature  engineering)이라고 합니다. 그에 반해 딥러닝은 이 단계를 완전히 자동화 합니다. 딥러닝을 사용하면 특성을 직접 찾는 대신 한 번에 모든 특성을 학습할 수 있습니다. 머신 러닝 작업 흐름을 매우 단순화시켜 주므로 고도의 다단계 작업과정을 하나의 간단한 엔드-투-엔드(end-to-end) 딥러닝 모델로 대체할 수 있습니다.

이슈의 핵심이 여러 개의 연속된 표현 층을 가지는 것이라면, 얕은 학습 방법도 딥러닝의 효과를 모사하기 위해 반복적으로 적용할 수 있지 않을까요? 실제로 얕은 학습 방법을 연속적으로 적용하면 각 층의 효과는 빠르게 줄어듭니다. 3개의 층을 가진 모델에서 최적의 첫 번째 표현 층은 하나의 층이나 2개의 층을 가진 모델에서 최적의 첫 번째 층과는 달라야 합니다. 딥러닝의 변환 능력은 모델이 모든 표현 층을 순차적이 아니라(즉 탐욕적(greedily)방법이 아니라) 동시에 공동으로 학습하게 만듭니다. 이런 공동 특성 학습 능력 덕택에 모델이 내부 특성 하나에 맞추어질 때무다 이에 의존하는 다른 모든 특성이 사람이 개입하지 않아도 자동으로 변화에 적용하게 됩니다. 모든 학습은 하나의 피드백 신오에 의해 시작됩니다. 즉 모델의 모든 변화는 최종 목표를 따라게게 됩니다. 이 방식은 모델을 많은 중간 영역(층)으로 나누어 복잡하고 추상화된 표현을 학습시킬 수 있기 때문에 얕은 학습 모델을 탐욕적으로 쌓은 것보다 훨씬 강력합니다. 여기에서 각 층은 이전 층에 의존하지 않는 단순한 변환을 수행합니다.

딥러닝이 데이터로부터 학습하는 방법에는 두 가지 중요한 특징이 있습니다. 층을 거치면서 점짐적으로 더 복잡한 표현이 만들어진다는 것과 이런 점전적인 중간 표현이 공동으로 학습된다는 사실입니다. 각 층은 사위 층과 하위 층의 표현이 변함에 따라서 함께 바뀝니다. 이 2개의 특징이 이전의 머신 러닝 접근 방법보다 딥러닝이 훨씬 성공하게 된 이유입니다.


1.2.5 다시 신경망으로

 2010년경에 신경만은 대부분 과학 커뮤니티에서 관심을 받지 못했지만, 여전히 신경망에 대해 연구하고 있던 일부 사람들이 중요한 성과를 내기 시작했습니다. 토론토 대학의 제프리 힌튼(Geoffirey Hinton), 몬테리올 대학의 요슈아 벤지오(Yoshua Bengio), 뉴육 대학의 얀 르쿤, 스위스의 IDSIA입니다.

2011년에 IDSIA의 댄 크리슨(Dan Ciresan)이 GPU로 훈견된 심층 신경망(deep neural network)으로 학술 이미지 분류 대회에서 우승한 것이 시작이었습니다. 이것이 현대적인 딥러닝의 첫 번째 성공입니다. 그리고 이어서 2012년 대규모 이미지 분류 대회인 ImageNet에 힌튼 팀이 등장하면서 분수령이 되었습니다. ImageNet대회는 그 당시 아주 어려운 문제였습니다. 1,400만개의 이미지를 훈련시킨 후 고해상도 컬러 이미지를 1,000개의 범주로 분류해야 합니다. 2011년에 전통적인 컴퓨터 비전 방식을 사용한 우승 모델의 상위 5개 예측이 타깃 클래스를 맞출 정확도는 74.3%였습니다. 그런데 2012년 제프리 힌튼이 조언자로 참여하고 알렉스 크리체브스키(Alex Knizhevsky)가 이끄는 팀이 상위 5개 예측에 대한 정확도 83.6%의 놀라운 성과를 달성했습니다. 이때부터 매년 이 대회는 심층 합성곱 신경망(deep convolutional neural network, ConvNet)이 우승을 차지했습니다. 2015년의 우승자는 96.4%의 정확도를 달성했고 ImageNet의 분류 문제는 완전히 해결된 것으로 간주되었습니다.

2012년부터 심층 합성곱 신경망이 모든 컴퓨터 비전 작업의 주력 알고리즘이 되었습니다. 이 알고리즘은 조금 더 일반적이며, 지각에 관한 모든 문제에 적용할 수 있습니다. 2015년과 2016년에 열린 주요 컴퓨터 비전 콘퍼런스에서 어떤 형태로든 컨브넷(ConvNet)을 포함하지 않은 발표를 찾는것은 거의 불가능할 정도 입니다. 동시에 딥러닝은 자연어 처리(natural language proceesing)간은 다른 종류의 문제에도 적용되었습니다. 다양한 애플리케이션에서 SVM과 결정 트리를 완전히 대체하고 있습니다. 예를 들어 지난 몇 년간 유럽 입자 물리 연구소(European Organization for Nuclear Reseearch, CERN)는 대형 강입자 충돌기(Large Hadron Collider, LHC)에 있는 ATLAS가지기 에서 얻은 입자 데이터를 분석하기 위해 결정 트리 기반의 알고리즘을 사용했습니다. 하지만 높은 성능과 훈련 데이터셋에서의 손쉬운 훈련을 고려하여 CERN의 최근 연구는 케라스(Keras)기ㅈ반의 심층 신경망을 적용하기 시작했습니다.

1.2.4 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 머신

 결정 트리(decision tree)는 플로차트(flowchart)같은 구조를 가지며 입력 데이터 포인트를 분류하거나 주어진 입력에 대해 출력 값을 예측합니다. 결정 트리는 시각화하고 이해하기 쉽습니다. 데이터에서 학습되는 결정 트리는 2000년대부터 연구자들에게 크게 관심을 받기 시작했고 2010년까지 커널 방법보다 선호하곤 했습니다. 특히 랜덤 포레스트(Random Forest)알고리즘은 결정 트리 학습에 기초한 것으로 안정적이고 실전에서 유용합니다. 서로 다른 결정 트리를 많이 만들고 그 출력을 앙상블하는 방법을 사용합니다. 랜덤 포레스트는 다양한 문제에 적용할 수 있습니다. 얕은 학습에 해당하는 어떤 작업에서도 거의 항상 두 번째로 가장 좋은 알고리즘입니다. 잘 알려진 머신러닝 경연 웹 사이트 캐글(Kaggle)(http://kaggle.com)이 2010년에 시작되었을 때부터 랜덤 포레스트가 가장 선호하는 알고리즘이 되었습니다. 2014년에 그래디언트 부스팅 머신(gradient boosting machine)이 그 뒤를 이어받았습니다. 랜덤 포레스트와 아주 비슷하게 그래디언트 부스팅 머신은 약한 예측 모델인 결정 트리를 앙상블하는 것을 기반으로 하는 머신 러닝 기법입니다. 이 알고리즘은 이전 모델에서 놓친 데이터 포인트를 보완하는 새로운 모델을 반복적으로 훈련함으로써 머신 러닝 모델을 향상하는 방법인 그래디언트 부스팅(gradient boosting)을 사용합니다. 결정 트리에 그래디언트 부스팅 기법을 적용하면 비슷한 성질을 가지면서도 대부분의 경우에 랜덤 포레스트의 성능을 능가하는 모델을 만듭니다. 이 알고리즘이 오늘날 지각에 관련되지 않은 데이터를 다루기 위한 알고리즘 중 최고는 아니지만 가장 뛰어납니다. 딥러닝을 제외하고 캐글 경연 대회에서 가장 많이 사용되는 기법입니다.