[Ⅰ. Neural Networks and Deep Learning] Introduction to Deep Learning (1)
Introduction to Deep Learning
Introduction to Deep Learning
What is a Neural Network?
딥 러닝 이라는 용어는 신경망, 때로는 매우 큰 신경망을 훈련시키는 것을 의미합니다. 그렇다면 신경망이란 정확히 무엇을 뜻하는 걸까요? 이번에는 몇 가지 기본적인 직관들을 다뤄보겠습니다.
주택 가격 예측 예제로 시작해 봅시다. 6개의 집이 있는 데이터 세트를 가지고 있다고 가정해 봅시다. 제곱 피트 또는 제곱 미터 단위로 집들의 크기를 알고, 집들의 가격을 알고 그 크기의 함수로서 집들의 가격을 예측하기 위해 함수를 맞추려고 합니다.
선형 회귀에 익숙하다면 데이터에 일직선을 그으면 선이 나오게 되고 좀 더 그럴듯 하게 말하면 가격이 결코 음수가 될 수 없다는 것을 알고 있습니다. 따라서 결국 음수가 될 직선을 커브를 통해 $0$으로 만들어 줍니다. 그렇게 해서 두꺼운 파란선은 집의 크기에 따라 집의 가격을 예측하는 기능을 합니다.
값이 $0$인 부분이 있고 그 다음 우측 부분에 일직선이 있습니다. 그래서 여러분은 이 함수를 주택 가격에 딱 맞는 아주 단순한 신경망이라고 생각하시면 됩니다. 가장 간단한 신경망이라고 볼 수 있죠.
우리는 신경망에 대한 입력으로 $x$라고 부르는 집의 크기를 가지고 있습니다. 작은 원(노드)으로 들어가 우리가 $y$라고 부르는 값을 출력합니다. 그래서 이 작은 원은 신경망의 단일 뉴런으로 우리가 왼쪽에 그린 이 기능을 구현합니다. 그리고 뉴런이 하는 일은 크기를 입력하고, 선형 함수를 계산하고, 최대 $0$을 설정한 후 예상 가격을 출력합니다.
그리고는 신경망 문헌에서 여러분은 이 함수를 많이 볼 것입니다. 이 함수는 때때로 0이 되고 이후 직선으로 나타납니다. 이 함수를 ReLU함수라고 하며, 이는 정류 선형 단위(Rectified Linear Unit)를 나타냅니다. 그래서 R-E-L-U 죠. 정류된(rectified)다는건 단지 $0$을 최대값으로 한다는 뜻을 의미합니다. 때문에 이런 형태의 함수를 얻게 되는 겁니다.
지금은 ReLU에 대해서는 걱정할 필요가 없습니다. 하지만 나중에 다른 과정에서 다시 보게 될 것입니다.
만약 위 단일 뉴런, 신경망이, 정말 작은 신경망이라면 더 큰 신경망은 많은 단일 뉴런들을 가져다가 함께 쌓음으로써 형성됩니다. 따라서 이 뉴런을 하나의 레고블럭이라고 생각하시면 이러한 레고 블럭을 많이 쌓아서 더 큰 신경망을 얻게 되는 것입니다.
이제 크기만으로 집값을 예측하는 대신 다른 특징이 있다고 가정해 봅시다. 여러분은 그 집에 대한 다른 것들을 알고 있습니다.
예를 들어, 우리가 “#bedrooms”쓰는침실의 수 같은 것 말입니다.그리고 여러분은 아마도 집의 가격에 정말로 영향을 미치는 것 중 하나가 가족의 크기라고 생각할지도 모릅니다. 그렇다면 이집이 3인 가족, 4인 가족 또는 5인 가족이 살 수 있을 까요? 실질적으로 제곱 피트 또는 제곱 미터의 집 크기와 여러분의 가족의 크기에 맞는 집을 결정할 수 있는 침실의 수를 기반으로 합니다.
그리고 여러분은 zip code를 아실 겁니다. 혹은 우편번호(postal code). zip code는 기능에서 알 수 있듯이 보행성입니다. 그럼 이 동네는 걷기에 좋은 동네인가요? 식료품점까지는 걷기 좋은가요? 학교까지 걸어갈 수 있나요? 운전을 해야 하나요? 어떤 사람들은 걷기 좋은 동네를 선호합니다. 미국뿐만 아니라 다른 나라들도 마찬가지로 우편 번호와 재산은 학교의 질이 얼마나 좋은지 알려줍니다.
그래서 그려진 각각의 작은 원들은 ReLU 또는 비선형 함수들 중 하나가 될 수 있습니다. 그렇게 되면 침실의 크기와 개수에 따라서 가족 구성원 수와 그들의 zip code를 추정할 수 있고, 도보 가능한 정도, 우편번호 및 재산에 따라 학교의 질을 추정할 수 있습니다. 마지막으로 사람들이 집값이 얼마인지 결정하는 방식으로 생각할 수 있습니다. 집을 사는 데 기꺼이 돈을 지불하는 것은 그들에게 정말로 중요한 것들을 보는 것입니다. 이 경우 가족 구성원 수, 도보 가능한 정도 그리고 학교의 질은 가격을 예측하는 데 도움이 됩니다.
이번 사례에서 $x$는 이 4가지 입력값입니다. 그리고 $y$는 예측하려는 가격입니다. 그래서 몇 개의 단일 뉴런 또는 이전 그림의 간단한 예측 변수를 함께 쌓음으로써, 우리는 이제 조금 더 큰 신경망을 갖게 되었습니다. 신경망을 관리하는 방법은 신경망을 구현할 때 $x$의 입력값과 $y$라는 결과값을 훈련 세트에 도입시키는 것입니다. 이 모든 것들이 중간에 있어서 그들은 스스로 알아낼 것입니다.
그래서 실제 구현한 것이 다음 그림입니다.
여기에 4개의 입력값을 가지고 있는 신경망이 있습니다. 따라서 입력값의 특성은 집의 크기, 침실의 수, zip code 또는 우편번호, 그리고 이웃의 재산일 수 있습니다. 따라서 이런 입력 값의 특성을 고려할 때 신경망의 역할은 가격을 예측하는 것입니다. 그리고 이 원들, 이것들은 신경망의 숨겨진 단위라고 불리는데, 각각은 네 가지 입력 기능을 모두 가지고 있습니다. 예를 들어, 첫 번째 노드가 가족 규모를 나타내고 신경망은 4가지 특성을 모두 가지고 있습니다. 이 노드가 무엇이든 원하는 것을 결정한다고 말하기 보다는 가족 규모는 특성 $x_1$과 $x_2$에만 의존합니다. 대신에 신경망은 여러분이 이 노드가 되고자 하는 것을 결정하라고 말할 것입니다. 그리고 원하는 것을 계산할 수 있는 네 가지 입력 기능을 모두 제공합니다.
그래서 $x_n$가 포함된 레이어를 입력층이라고 하고 신경망 중간에 있는 레이어는 밀도가 높다고 말합니다. 왜냐하면 모든 입력 기능은 가운데 있는 모든 원과 연결되어 있기 때문입니다. 그리고 신경망의 가장 놀라운 점은 $x$와 $y$에 대한 충분한 데이터가 주어지고, $x$와 $y$ 모두에 대한 충분한 훈련 예제가 주어지면, 신경망은 $x$에서 $y$까지 정확하게 매핑되는 함수를 알아내는 데 놀라울 정도로 뛰어납니다.
이것이 기본적인 신경망에 대한 내용입니다. 여러분 자신의 신경망을 구축하면 아마도 가장 유용하고, 지도된 학습 인센티브에 가장 강력하다는 것을 알게 될 것입니다. 즉, 입력 $x$를 어떤 출력 $y$에 매핑하려고 한다는 것입니다. 방금 집값 예측 사례에서 보았던 것처럼 말이죠.
다음으로는 지도 학습의 몇 가지 예제와 네트워크가 애플리케이션에도 매우 유용하다는 것을 알 수 있는 몇 가지 예를 살펴보겠습니다.
Supervised Learning with Neural Networks
신경망이 요즘 선풍적인 인기를 끌고 있습니다. 잘 작동되고 있기 때문에 아마 이런 인기 정도는 예상할 수 있었는데요. 하지만 지금까지 신경망에 의해 창출된 거의 모든 경제적 가치는 지도 학습이라는 한가지 유형의 머신 러닝을 통해 만들어진 것입니다. 이게 무슨 뜻인지 살펴보고 사례도 같이 보도록 하겠습니다.
지도 학습에서는 일부 입력값 $x$가 있고 일부 출력값 $y$에 대한 함수 매핑을 학습하려고 합니다. 예를 들어, 우리는 방금 주택 가격 예측하는 애플리케이션을 보았습니다. 주택의 특성을 입력하고 가격을 산출하거나 추정하려고 합니다.
다음은 신경망이 매우 효과적으로 적용된 몇 가지 다른 사례 입니다. 오늘날 딥 러닝의 가장 수익성이 높은 단일 애플리케이션은 온라인 광고입니다. 가장 영향력이 크지는 않지만 수익성이 좋은 것은 사실입니다. 웹사이트에 광고에 대한 정보를 입력하고 사용자에 대한 일부 정보를 입력함으로써 신경망은 사용자가 광고를 클릭하는지 여부를 매우 잘 예측하게 됩니다. 가장 클릭할 가능성이 높은 광고를 보여줌으로써, 여러 기업들에게는 수익성이 매우 좋은 신경망 애플리케이션이 되었습니다. 왜냐하면 사람들이 가장 클릭할 확률이 높은 광고를 보여주는 것이 결정적으로 온라인광고 회사의 수익에 매우 큰영향을 미치기 때문입니다.
컴퓨터 비전 또한 최근 몇년 동안 놀라운 발전을 이루어 냈습니다. 상당부분 딥러닝에 의해서 말입니다. 이미지를 입력하고 인덱스를 결과값을 원할 경우 1에서 1,000 사이의 이 사진이 1000개의 다른 이미지 중 하나일 수 있는지 알려줍니다. 그래서 이러한 여러 가지 이미지를 태깅하는데 사용할 수도 있습니다.
최근 음성 인식의 발전도 매우 흥미롭다고 생각합니다. 이제 오디오 클립을 신경망에 입력하고 텍스트 대본을 출력할 수 있게 되었습니다.
기계 번역 분야 또한 딥러닝을 통해 크게 발전해오고 있습니다. 이제 신경망에서 영어 문장을 입력하고 중국어 문장으로 직접 출력할 수 있게 되었습니다.
자율주행에서는 이미지를 입력하면 자동차 앞에 있는 사진이나 레이더에 확인되는 정보를 기반으로 신경망의 학습 통하여 도로 위 다른 차량의 위치를 파악할 수도 있게 되었습니다. 이것이 바로 자율주행 시스템의 핵심 요소가 되는 것입니다. 그래서 신경망을 통한 많은 가치 창출은 문제에 대해 무엇이 $x$이고 무엇이 $y$가 되어야 하는지를 영리하게 선택하고 이 지도 학습 구성요소를 종종 자율주행 차량과 같은 더 큰 시스템에 맞추는 것입니다.
약간 다른 유형의 신경망은 다른 응용 프로그램에 유용하다는 것이 밝혀졌다. 예를 들어, 이전 비디오에서 본 부동산 애플리케이션에서는 보편적으로 표준화된 신경망 아키텍처를 사용합니다. 아마도 부동산과 온라인 광고는 우리가 본 것과 같은 비교적 표준적인 신경망일 것이다.
이미지 애플리케이션의 경우 CNN으로 약칭되는 Convolution Neural Network을 사용하는 경우가 많습니다. 시퀀스 데이터의 경우에도 그렇습니다. 예를 들어, 오디오에는 시간적 요소가 있습니다. 오디오는 시간에 따라 재생되기 때문에 가장 자연스럽게 1차원 시계열 또는 1차원 시간 시퀀스로 표현됩니다. 그러므로 시퀀스 데이터의 경우, RNN, 즉 Recurrent Neural Network을 사용하는 경우가 많습니다.
언어, 영어와 중국어, 알파벳 또는 단어들은 하나씩 나열되는 특성이 있죠. 그래서 언어도 가장 자연스럽게 시퀀스 데이터로 표현됩니다. 따라서 조금 더 복잡한 버전의 RNN이 애플리케이션에 자주 사용됩니다.
그리고 자율주행과 같은 더욱 복잡한 애플리케이션의 경우 이미지가 있기 때문에 CNN 구조 및 레이더 정보가 훨씬 더 많이 제안될 수 있습니다. 더 많은 맞춤형 또는 더 복잡한 하이브리드 신경망 아키텍처가 구축될 수도 있습니다.
그래서 표준 신경망과 CNN 및 RNN 아키텍처가 무엇인지에 대해 좀 더 구체적으로 설명 드리자면 문헌에서 이런 사진들을 보셨을 겁니다.
📌 Neural Network examples
먼저 표준 신경망이 있습니다. CNN은 이미지 데이터에 자주 쓰입니다. RNN은 시간적 요소가 있을 수 있는 이러한 유형의 1차원 시퀀스 데이터에 매우 적합합니다.
CNN은 나중에 자세히 알아보겠습니다. 이 그림이 무얼 의미하는지, 어떻게 구현할 수 있는지 말이죠. RNN 또한 어떻게 시행되는지 추후에 알아보겠습니다
정형 데이터와 비정형 데이터 모두에 머신 러닝을 적용하는 애플리케이션에 대해서도 들어보셨을 겁니다. 구조화된 데이터는 기본적으로 데이터베이스의 데이터를 의미합니다. 예를 들어, 주택 가격 예측하는데 주택의 크기와 침실의 수를 알려주는 데이터베이스나 컬럼이 있을 수 있습니다. 이것은 구조화된 데이터입니다. 또는 사용자가 광고를 클릭할지 여부를 예측할 때 연령, 광고에 대한 일부 정보, 그리고 예측하려는 이유를 레이블로 표시할 수 있습니다. 이것은 구조화된 데이터입니다. 즉, 집의 크기, 침실의 수, 그리고 사용자의 나이와 같은 각각의 특징들은 매우 명확한 의미를 가지고 있습니다.
대조적으로, 비정형 데이터는 이미지 또는 텍스트에 있는 것을 인식하고자 하는 오디오, 원시 오디오 또는 이미지와 같은 것을 가리킵니다. 여기서 특징은 이미지의 픽셀 값 또는 텍스트의 개별 단어일 수 있습니다. 역사적으로 컴퓨터가 정형 데이터에 비해 비정형 데이털르 이해하는 것이 훨씬 더 어려웠습니다. 그리고 사실 인류는 이미지뿐만 아니라 오디오 신호를 이해하는 데 매우 능숙하게 진화해 왔습니다. 그리고 텍스트는 좀 더 최근의 발명품이지만, 사람들은 구조화되지 않은 데이터를 정말 잘 해석합니다.
그래서 신경망의 부상에 대해 가장 흥미로운 점 중 하나는, 딥러닝 덕분에, 신경 네트워크 덕분에, 컴퓨터가 이제 불과 몇 년 전에 비해 구조화되지 않은 데이터를 훨씬 더 잘 해석할 수 있게 되었다는 것입니다. 그리고 이것은 음성 인식, 이미지 인식, 텍스트에 자연어 처리를 사용하는 많은 흥미로운 응용 프로그램들을 위한 기회를 만듭니다. 불과 2~3년 전만 해도 가능했던 것보다 훨씬 더 많이요.
제 생각에 인간은 자연스럽게 비정형 데이터를 이해하려는 공감대가 있기 때문에 비정형 데이터에 대한 신경망 성공 스토리는 미디어를 통해 더 많이 들을 수 있을 것입니다. 왜냐하면 신경망이 고양이를 인식할 때 그것은 그저 멋지기 때문입니다. 우리 모두는 그것을 좋아하고, 그것이 무엇을 의미하는지 알고 있습니다. 그러나 신경망이 창출하는 많은 단기적인 경제적 가치는 구조화된 데이터에도 있습니다. 훨씬 더 나은 광고 시스템, 훨씬 더 나은 수익 추천, 그리고 많은 기업들이 정확한 예측을 할 수 있도록 돕는 거대한 양의 데이터베이스 처리 능력 같은 것 말입니다.
그러므로 이번에 다룰 많은 기술들은 정형 데이터와 비정형 데이터 모두에 적용됩니다. 알고리즘을 설명하기 위해 비정형 데이터를 이용한 사례를 조금 더 다뤄보도록 하겠습니다. 그러나 각각 신경망의 애플리케이션을 생각하면서 정형 데이터와 비정형 데이터 모두에서 이러한 신경망의 용도를 찾으시기 바랍니다.
신경망은 지도 학습에 큰 변화를 가져다 주었는데요. 그러면서 동시에 엄청난 경제적 가치도 창출하고 있습니다. 그러나 신경망 이면의 기본적인 기술적 아이디어는 사실 수십 년 전부터 존재해 왔습니다. 그렇다면 그들은 왜 이제서야 상용화되고 제대로 작동하고 있는 것일까요? 다음은 왜 최근에서야 신경망이 우리가 사용할 수 있는 강력한 도구가 되었는지에 대해 설명하겠습니다.
댓글남기기