2020. 5. 8. 18:00ㆍAI/모두를 위한 딥러닝
이 포스트는 모두를 위한 딥러닝 - Tensor Flow를 정리한 내용을 담았습니다.
누구나 이해할 수 있는 수준으로 설명하고자 하였으며 LAB의 코드는 TF2.0에 맞추어 재작성되었습니다.
우리는 지난번 포스트들에서 ML의 기본적인 용어와 개념 설명을 시작으로 linear regression, multi-variable linear regression, logistic regression, logistic classification, softmax classification, softmax regression 등 다양한 M/DL의 기본 개념에 대해 알아보았습니다. 이제 모두를 위한 딥러닝 강좌의 중간까지 오셨습니다. 앞으로 절반 정도 남은 딥러닝의 자세한 내용을 배우기 전에, 딥러닝의 역사를 통해 딥러닝을 조금 더 친숙하게 알아보겠습니다. 본 포스트는 모두를 위한 딥러닝 시즌1의 lec 08-1과 08-2를 합쳐 정리하였습니다. 딥러닝의 역사를 설명하다 보면 이후에 배울 다양한 알고리즘을 빼놓을 수 없지만, 이에 대해 저는 저 또한 배워나가는 과정이기 때문에 강의의 설명과 구글링을 통해 최대한 간략하게만 설명하고자 하였습니다. 따라서 복잡한 알고리즘에 대해 완벽한 설명 없이 수박 겉핥기식으로 넘어가는 것에 대해 죄송하게 생각하며, 이후 포스트에서 동일한 알고리즘들을 설명할 때는 더욱 자세하고 쉽게 설명할 수 있도록 노력하겠습니다.
우리는 첫 포스트에서 기계학습이 나온 배경에 대해 알아보았습니다. 기계학습에 대해 짧게 요약하고 넘어가자면, 기계학습은 explicit programming의 한계를 인지하고 복잡한 문제에 대해 사람의 힘 없이 컴퓨터 스스로 해결하는 방법을 생각하는 것에서 시작했습니다. 컴퓨터 스스로 문제를 해결하기 위해서는 문제 인식, 사고, 계산, 결과 도출 등 사람이 문제를 해결하는 방법을 따라해야하는데, 이러한 측면에서 즉 컴퓨터는 사람의 뇌를 모방해야 합니다. 이후 연구를 통해 뇌는 단순하게 동작하는 뉴런들이 굉장히 복잡하게 연결되어 있는 구조를 가지고 있으며, 이러한 구조 속에서 인간의 복잡한 사고, 계산 등이 일어난다는 것을 알게 되었습니다. 우리는 뉴런의 구조와 동작 방식을 컴퓨터에서 모방하는데, 아래 그림을 보겠습니다.
뉴런에서 신호가 처리되는 방식을 컴퓨터에 대입해보면 특정 입력(X)에 대한 값이 거리에 따라 Weight(W)값에 의해 곱해지게 되고 이들의 합과 bias를 더한 출력 값(Y)이 특정 기준 값을 넘게 되면 활성화가 되고, 넘지 못하면 활성화가 되지 못하는 방식으로 동작합니다. 기준값에 따라 활성화가 된다(1)/안된다(0)에서 이미 눈치채셨을 수도 있지만, 이러한 동작 방식이 이전에 배운 logistic regression의 한 예시입니다. 위의 방식을 토대로 만든 최초의 하드웨어 장치가 바로 1957년에 만든 Frank Rosenblatt 교수님의 Perceptron입니다. 이 장치는 당시 최초의 인공지능이라 불렸고, 많은 사람들의 이목을 집중시켰습니다. 바로 다음 해인 1958년에 뉴욕 타임스와의 인터뷰에서 Perceptron 장치가 발전하여 곧 걷고, 말하고, 보고, 글 쓰고, 스스로를 재생산하고, 자신의 존재를 인지할 것이라고 기대한다고 말했습니다. 물론 자신의 존재를 인지하는 등의 일은 현재까지도 불가능하지만, 당시 인공지능에 대한 기대감이 매우 높았음을 알 수 있습니다. 이러한 기대감에 찬물을 끼얹은 인공지능의 첫 번째 문제가 바로 XOR모델(배타적 논리합)입니다. (0,0), (1,1) 일 때 1, (1,0), (0,1) 일 때 0의 값을 가지는 XOR모델은 이전의 AND, OR모델과는 다르게 linear 한 방법으로는 결과를 예측할 수 없음을 알게 됩니다. 아래 그림을 보면 OR과 AND모델은 linear 한 방식으로 나눌 수 있지만, XOR은 linear 한 선을 그어 +(1)와 -(0)를 구분하는 것은 불가능합니다.
이 문제에 대해 Marvin Minsky 교수님은 MLP(multilayer Perceptrons), 다층 퍼셉트론을 통해서 XOR문제를 해결할 수는 있지만, 기계가 학습할 수는 없다고 발표하고("No one on earth had found a viable way to train"), 이에 많은 사람들이 이전에 인공지능에 대한 기대감이 실망으로 바뀌게 됩니다. 이것이 뉴럴 네트워크의 첫 번째 침체기입니다. 이후 이 문제는 1986년 Hinton 교수님이 Backpropagation이라는 알고리즘을 통해 해결할 수 있음을 발표하였습니다. 이후에 다시 보게 되겠지만 Backpropagation(역전파)알고리즘을 농구 자유투를 예시로 들어 간단히 설명하면, 이전까지의 순전파가 적절한 지점에서 자유투를 던지는 과정을 반복했다면, 역전파는 던진 공이 어느 지점에 도착했는지를 확인하고, 던질 위치를 수정하는 과정이라고 볼 수 있습니다. 즉, 컴퓨터에서 결괏값을 확인하고 틀린 정보를 뒤로 전달하여 Weight과 bias를 수정하여 다시 학습을 진행하는 과정을 말합니다.
한편, LeCun 교수님은 CNN(Convolutional Neural Networks, 합성곱 신경망)알고리즘을 통해 이 문제에 접근했습니다. CNN알고리즘 또한 뒤에서 다시 배우게 되겠지만, 고양이에게 사진을 보여준 후 시신경을 담당하는 뉴런들을 관찰한 결과 그림의 형태에 따라 활성화되는 뉴런들이 다르다는 것, 즉 그림 전체를 보고 판단하는 것이 아니라 일부분을 보면서 판단하고 나중에 종합되어 판단한다는 것을 확인하는 실험에서 기인하였습니다. 실제로 아래 그림 3.1을 보면 그림을 조금씩 잘라 나중에 합치는 방법으로 이미지를 분석하고 있음을 볼 수 있습니다.
하지만 다시 M/DL은 큰 문제를 만나게 됩니다. 학습 단계가 긴 복잡한 문제를 풀 때 10여개가 넘는 레이어를 다루어야 하는데, Backpropagation 알고리즘은 레이어가 많은 경우 잘 작동을 하지 않습니다. 실제로 이러한 문제에 대해 LeCun 교수님은 복잡한 문제에 대해 SVM이나 RandomForest 등의 단순한 알고리즘이 CNN에 비해 더 잘 동작한다고 발표했습니다. 따라서 이러한 문제를 직면한 뉴럴 네트워크는 두 번째 침체기에 빠지게 됩니다. 침체기에 힘든 시기를 보내고 있던 와중, Hinton교수님은 캐나다의 CIFAR이라는 단체에서 계속 연구한 결과 레이어들의 Weight값을 잘 설정하면 복잡한 문제들도 잘 해결할 수 있다고 발표했습니다. 바로 이 시기에 기존의 뉴럴 네트워크를 딥 네트워크, 딥러닝이라 부르게 됩니다. 또한 2012년 ILSVRC(이미지 인식 알고리즘의 성능을 평가하는 대회)에서 딥러닝을 이용한 AlexNet알고리즘으로 기존 26%에 달했던 오류를 15%로 줄이면서 사람들의 주목을 다시 받게 되었습니다. 현재는 약 2%가량의 오류로, 사람인 경우의 5%보다 낮은 에러를 보이고 있습니다. 딥러닝이라는 개념이 소개된 지 몇 년 지나지 않았지만, 현재는 이미지 인식뿐만이 아니라 음성 인식, 알파고 등 다양한 분야에서 사용되고 있습니다. 우리에게 가장 친숙한 예로는 유튜브의 자동생성 자막, 넷플릭스/아마존의 추천 시스템 등이 있습니다. 이제 딥러닝은 전문가가 아니더라도 우리 곁에 있고, 앞으로는 모든 분야에서 떼어내려야 떼어낼 수 없는 관계가 될 것입니다.
'AI > 모두를 위한 딥러닝' 카테고리의 다른 글
09-2. 딥네트워크 학습 시키기 (Backpropagation) (0) | 2020.05.21 |
---|---|
09. XOR 문제 딥러닝으로 풀기 (0) | 2020.05.11 |
07-2. Model evaluation: Training and test data sets (0) | 2020.05.04 |
07-1. Learning rate, Feature scailing, Overfitting, and Regularization (0) | 2020.04.30 |
06-3. Fancy Softmax Classification LAB(2) (0) | 2020.04.25 |