티스토리 뷰

728x90

[AI - Artificial Intelligence] 인공지능, 머신러닝, 딥러닝이란?




서문



비전공자인 내가 컴퓨터에 관심을 가진 것은 친구와 만담을 가진 이후이다. 친구는 나에게 머신러닝에 대해 알려주었고, 나는 그렇게 컴퓨터에 매혹되었다.


내가 원하는 목적에 맞게 컴퓨터를 학습시키고 컴퓨터는 학습한 데이터를 기반으로 답을 알려준다? 또한 어떤 규칙을 알려주면 스스로 학습할수도 있다고? 이미 사람을 어떤 분야에서 이기는 AI도 나왔다고. 맞아 알파고가 있었지...


'이거 잘하면 자비스도 만들 수 있겠다? ㅋㅋㅋ' 여기서 자비스는 마블 - 아이언맨에 나오는 첨단기술의 집약체이다.
로버트 다우니 주니어(아이언맨)이 말하면 그 말의 의미는 물론, 말동무가 되어주며 삶의 많은 부분의 일들을 처리해준다.


친구는 말했다. 자신의 목표가 전 분야를 아우르는 인공지능을 만드는 것이라고... 그 말을 듣는 순간, 블랙홀처럼 나를 빨아드렸다. 그러나 다시 그 말이 내 머리를 통과하는 순간, 화이트홀을 타고 다시 돌아왔다. 장미빛을 보다가 순간 공포를 느꼈기 때문이다.


  • a: " 가능하니? "
  • b: " 모르지 근데 나는 가능하다고 생각해."
  • a: " 만약 된다면 너는 세상을 구원한 구원자이거나, 세상을 멸망하게 한 파괴자일거야."
  • b: " ... "

수많은 SF영화에서 나오는 철학적 가치들을 생각하게 되었다. 인간의 가치, 미래, 인공지능 등... 우린 어느 길로 가는 것일까?


역사상 중요한 기술발전들이 있었고, 그 역사의 땅 위에서 편리와 효용을 누리고 있는 우리, 나는 또 한번의 중요한 사건이 곧 이 분야에서 나오지 않을까 생각했다.


이를 더욱 명확하게 느끼게 한 것은 알파고와의 만남이었다. 책에서만 보던 기계와 사람의 대결을 직접적으로 경험한 것은 처음이었고 한 분야의 정상에 있는 사람을 이기는 것을 보며, 그저


  • "기술의 발전이 대단하구나."

라고 생각했다.
그러나 생각하면 할수록


  • '우리가 준비가 안된 상태에서 판도라의 상자를 열려고 한 것은 아닐까?'

라는 느낌이 들었다.


사람의 악함을 배운다면, 전무후무한 혼란이 일어날수도 있겠다는 생각이 들었다. 우리 운명의 레버리지를 너무 극한으로 올려버린 것은 아닐까? (천국과 지옥의 간극처럼)
어느 쪽으로든지 근래에 역사에 남을 큰 변화가 일어날 것은 자명한 사실이다. 신이 있다면, 이 큰 변화의 현장 앞에서 우리에게 기회를 준 것일수도 있다. 우리를 돌아보라고, 우리가 가야할 방향을 잘 선택하라고


곧 양자역학을 이용한 양자컴퓨터도 나올 것이고, 상용화가 된다면 많은 생활이 바뀔 것이다. 4차혁명에서 5차혁명이 이루어질 것이다. 역사에서 혁명이 있을 때마다 양면의 동전처럼 발전이 있었다면, 도태되거나 안 좋아진 것도 있었다. 이 큰 흐름은 삶의 전반에서 느낄 것이고 경험할 것이기에 우린 이를 잘 알고 대처할 필요가 있다. 그것의 시작은 기술의 발전에 한 배를 타는 것이며, 그 기저에는 인간에 대한 관심과 사색이 필연적이고 필수적이며 필수불가결한 전제이다.



서문이 길었다.
이제 위에서 말한 이야기의 중심에 서있는 이론과 분야인 머신러닝과 딥러닝에 조금씩 알아보자.






본문



오늘은 간단하게 개념과 틀을 잡는 글이다. 글쓴이도 공부를 하기 위해 여러 가지 자료를 복합하여 만들었다.
더 자세한 이론, 수학적 설명은 다음에 한 파트씩 나눠서 더 자세히 다룰 것이다.🐱‍👤



지난 몇 년간, 또 지금 현재에 가장 이슈가 되는 분야는 단연 인공지능 분야이다. 지능적인 챗봇, 자율 주행 자동차, 가상비서 등 우리가 미래에서만 상상하던 것들이 현실화되고 있고 그 중심에는 인공지능, 머신러닝, 딥러닝이라는 개념이 자리잡고 있다.





출처: https://tensorflow.blog



그림을 보면 인공지능 > 머신러닝 > 딥러닝 으로 되어 있다. 즉 인공지능이라는 개념안에 머신러닝이 포함되며, 머신러닝이라는 개념안에 딥러닝이 포함되어 있다.



  • "아하, 그니까 우리가 AI라고 하는 인공지능 개념 안에 머신러닝이, 머신러닝 개념 안에 딥러닝이라는 개념이 있구나"



출처: https://blog.lgcns.com/2212




  • 인공지능 : 사람이 해야 할 일을 기계가 대신할 수 있는 모든 자동화에 관련된 일

  • 머신러닝 : 명시적으로 규칙을 프로그래밍하지 않고 데이터로부터 의사결정을 위한 패턴을 기계가 학습하는 것

  • 딥러닝 : 인공신경망(사람의 뇌 구조인 뉴런구조를 모방한 모델) 기반의 모델로 비정형 데이터로부터 특징 추출 및 판단까지 기계가 수행


인공지능은 인간의 학습능력, 추론능력, 지각능력, 자연언어의 이해능력 등을 컴퓨터 프로그램으로 실현한 기술, 인프라 기술, 방법론이나 실현 가능성 등을 연구하는 과학 분야를 지칭한다.


그럼 이런 생각을 할 수 있을 것이다.



  • "그럼 기계한테 어떤 문제에 대해서 사람이 하는 것들을 알려주어야겠네."
  • "우리가 하는 것들을 하나하나 넣어줘야하나?"


출처: https://tensorflow.blog



19C만 해도 사람들은 해석학분야의 계산을 자동화 하기 위한 기계적인 연산을 사용하는 방법에 몰두했다.


그러다가 20C 중반에 인공지능이라는 개념이 떠오르면서 사람의 일을 자동화 시켜주는 행위들에 대해 연구하게 되었고, 그때 나온 개념이 심볼릭 AI 이다.



  • 심볼릭 AI(symbolic AI) : 명시적인 규칙을 충분하게 많이 만들어서 지식을 기계에 준다면 인간 수준의 인공지능을 만들 수 있다는 관점 (AI개념에 더욱 맞다.)

  • "아, 사람이 해야 하는 것들을 알려줄텐데, 일관성과 규칙이 있는 것들을 일반화해서 기계에게 알려주는 것에서 시작되었구나.

그러나 한계를 느끼게 된다. 어떤 문제에 대해서 사람들이 문제풀이 방식들을 규칙들로 만들어 하나 하나 기계에게 알려주는 것은 특정 규칙이 정해진 것에 국한될 수 밖에 없다고 생각했다. 복잡한 문제(이미지분류, 음성인식, 언어번역 등등) 에 대해서 일관된 규칙과 명확한 인과관계를 파악하기 힘들기 때문에 그것을 기계에 잘 알려줄 수 없었다.








  • "그럼 기계가 스스로 규칙을 알아내는 방법은 없을까?"


이런 질문에서 새로운 관점으로 나온 것이 머신러닝 개념이다.


이제 어떤 문제에 대해서 데이터와 해답을 기계에게 주면 기계는 규칙을 찾아준다. 사람이 규칙을 알려줄 때보다 더 대량의 데이터에서 복잡한 규칙을 찾아주게 되었다.




출처: https://brunch.co.kr/@gdhan/2 본문 中 "인공지능, 기계학습 그리고 딥러닝" 강의자료 15p 일부 변경, https://www.slideshare.net/JinwonLee9/ss-70446412




예시를 보면 일반적인 프로그램은 "A입력에 B 조건이 성립하면 X를 동작시킨다." 라는 논리를 사람이 작성하는 반면에, 머신러닝은 A라는 정보를 입력할 때 정답이 X가 되는 조건 B를 찾도록 기계를 학습시키는 것이다. 이때 다양한 알고리즘(방법들)들이 정확한 답을 도출하기 위해 사용된다.



머신러닝의 종류에는 대표적으로 크게 3가지가 있다.



출처: https://wendys.tistory.com/169



  • 지도학습(Supervised Learning)


    • 입력과 정답값을 이용한 학습
    • 분류(Classification) 및 회귀문제(regression)에 활용
    • 대표 모델 : SVM, Decision Tree, KNN, 선형/로지스틱 회귀 등

  • 비지도학습(Unsupervised Learning)


    • 데이터만을 이용한 학습
    • 군집화(Clustering), 압축(compression)
    • 대표 모델 : K-means 클러스터링

  • 강화학습(Reinforcement Learning)


    • 정답값 대신 보상(Reward)에 의한 학습
    • Action Selection, Policy Learning
    • 대표 모델 : MDP(Markov Decision Process)


지도학습(Supervised Learning)



지도학습은 학습 데이터와 정답을 기계에게 알려주는 것이다. 우리가 공부할 때 문제와 정답을 보며 공부하는 것과 비슷하다고 생각하면 된다.



  • "아 이 문제는 이런 특징이 있고 이런 매커니즘으로 푸니까 정답이 이것이구나!!"


분류 (Classification)



출처: https://wendys.tistory.com/169



  • "기계야, 이 사진은 고양이야 강아지야? (이진분류)"
  • "기계야, 이 사물은 무슨 사물이야? (다중분류)

분류는 입력 데이터를 카테고리(라벨, 정답)에 따라 분류하는 문제이다. 범주형 정답을 사용하며, 두 가지 카테고리로 분류를 하는 이진분류문제와 3가지 이상의 카테고리로 분류하는 다중분류문제가 있다.


예를 들어 스팸메일을 분류하는 문제에 지도학습을 적용할 수 있다. 입력 데이터로 메일을 받고, 그 메일이 스팸인지 아닌지 정답을 준 다음 학습을 시키면 기계는 어떤 규칙을 발견하여 새로운 메일이 들어올 때 이 메일이 스팸메일인지 아닌지를 분류할 수 있다. 카테고리는 "스팸이다", "스팸이 아니다." 둘로 나눌 수 있기에 이진분류문제로 풀 수 있다.


스팸문자 분류 문제




회귀(Regression)




  • "기계야, 강북에 20평대 주택의 집값은 얼마야!?(회귀)"

회귀는 연속형 데이터를 활용하는 문제로 실제 특정 값을 예측할 때 사용한다. 예를 들어 부동산 값을 예측하는 문제는 회귀로 풀 수 있는데, 20평 집들의 데이터를 입력받아서 a라는 20평 집의 가격을 예측할 수 있다.


집값 예측 회귀 문제




비지도학습(Unsupervised Learning)



  • "기계야, 내가 정답은 없고 데이터만 있는데 어떤 패턴이 있는지 나는 모르니 너가 알려줄래?"

지도학습과 달리 비지도 학습은 정답을 알려주지 않고 학습하는 방법이다. 예를 들어 군집화라는 것이 학습 데이터를 n차원에 표현해서(Embedding) 데이터끼리의 거리나 유사도로 묶음을 만드는 것이다. 즉 스스로 a 데이터는 1번 그룹, a와 거리가 가깝거나 유사한 것들은 1번 그룹으로 군집시키는 것이다. 만약 동물들의 사진을 데이터로 넣어주고 군집을 시킨다면, 특징들이 비슷한 동물들끼리 한 집단에 넣어질 것이다. 그리고 나중에 새로운 동물 사진이 입력될 때, 가장 비슷한 특징을 지닌 군집으로 포함되는 것이다.



  • 다리가 4개인 동물 집단 : 사자, 호랑이, 기린
  • 날개가 있는 동물 집단 : 참새
  • 목이 긴 동물 집단 : 기린

출처:https://ikkison.tistory.com/51




강화학습(Reinforcement Learning)



출처:http://www.agilesoda.com/kr/ai/aiTrends



  • 강화학습의 주요 개념


    • 에이전트(Agent) : 행동의 주체
    • 환경(Environment) : 문제 세팅 그 자체, 게임에서는 에이전트가 취할 수 있는 행동, 그에 따른 보상 등 게임 자체의 모든 규칙이 환경
    • 상태(State) : 현재 시점에서 상황이 어떤지 나타내는 값의 집합
    • 행동(Action) : 에이전트가 취할 수 있는 선택지
    • 보상(Reward) : 에이전트가 어떤 행동을 했을 때 따라오는 이득
    • 정책(Polich) : 에이전트가 판단하는 방식

강화학습이란 정답값을 주는 것이 아니라 보상체계를 기계에게 알려준다. 주변 상태에 따라 어떤 행동을 할지 판단을 내리는 주체인 에이전트가 있고, 에이전트가 속한 환경이 있다. 에이전트가 행동을 하면 그에 따라 상태가 바뀌게 되고, 보상을 받을 수도 있다. 다시 말하면, 강화학습의 목표는 주어진 환경에서 보상을 최대한 많이 받을 수 있는 에이전트를 학습하는 것이다. 강화학습은 보통 게임이나 로보틱스 환경에 많이 이용된다. 로봇이 넘어지지 않고 꾸준히 갈 수 있게 하는 것도 강화학습으로 가능하다. 게임분야에서는 얼마 전에는 세계 AI 스타크래프트 2 대전에서 삼성팀이 강화학습으로 학습한 AI로 우승하였다.



지금까지 머신러닝의 개념과 종류에 대해 간단하게 알아봤다. 이제 머신러닝의 하나의 방법론인 딥러닝에 대해 알아보기로 하자.







딥러닝( Deep Learning )



딥러닝이란 머신러닝(기계학습)의 다양한 방법론 중 하나이다. 사람과 비슷한 수준의 기계를 기대하던 사람들은 사람에 대해 관심을 가지게 된다.



  • "사람은 물체를 인식할 때 어떤 방법으로 할까?"
  • "사람의 뇌는 물체를 어떤 식으로 인지할까?"
  • "뇌의 매커니즘을 알아보자"

이렇게 사람의 뇌에서 인지하는 방식을 모방하여 나온 모델이 인공신경망(Artificial Neural Network) 이다. 딥러닝은 인공신경망을 기초로 하는 모델이다.



출처: https://en.wikipedia.org/wiki/Biological_neuron_model



  • 생물학적 뉴런작용의 주요 용어


    • 신경세포(Neuron) - 정보를 담고 있는 세포
    • 수상돌기(Dendrite) - 다른 뉴런에서 입력신호를 받아서 활동 전위 이상의 자극이 주어졌을 때 축색돌기를 통해 다른 뉴런으로 신호를 보냄
    • 축색돌기(Axon) - 신경세포에서 외부로 전달 물질을 내보내는 통로
    • 시냅스(Synapse) - 뉴런과 뉴런을 연결

"신경세포는 시냅스를 거쳐서 수상돌기로 받아들인 외부의 전달물질을 세포체에 저장하다가 자신의 용량을 넘어서면 축색돌기를 통해 외부로 전달물질을 내보낸다고 알려져 있다.



출처: https://brunch.co.kr/@gdhan/6



뉴런 모델은 생물학적인 뉴런을 수학적으로 모델링 한 것이다. 한 뉴런이 다른 여러 개의 뉴런으로부터 입력값을 받으면, 신경세포체에 저장하다가 특정 활동 전위 이상의 자극이 주어지면 다른 뉴런으로 정보를 넘겨준다.



  • 그림의 $ x_1 $ , $ x_2 $ , $ x_3 $ 가 생물학적으로 뉴런에 해당하고 모델상에서 노드(Node)라고 한다.

  • $ \theta_1 $ , $ \theta_2 $ , $ \theta_3 $ 은 생물학적으로 수상돌기에 해당하며 모델상에서 가중치( weight ) 로 구성된 입력 부분이다.

  • $ h_\theta $ 는 생물학적으로 축색돌기에 해당하며 모델상에서 활성화 함수(Activation Function)이다.

그럼 모델상으로 다시 설명하면, 한 노드에 여러 개의 노드에서 나온 정보들이 전달되고 활성화 함수를 통해서 다른 노드로 정보를 전달한다. 세포체가 일정한 값을 넘어서면 외부로 출력 값을 보내는 것처럼 활성화 함수도 일정한 값을 기준으로 값을 변환하여 다음 노드로 정보를 보내준다.



출처: https://brunch.co.kr/@gdhan/6



  • 활성화 함수의 종류


    • Sigmoid Function(시그모이드함수)
    • Tanh
    • ReLU(Rectified Linear Unit 경사함수)
    • Leaky ReLU
    • 항등함수 (Identity Function)
    • Max Out
    • ....

가장 대표적인 활성화 함수인 Sigmoid 함수를 살펴보자.
Sigmoid함수는 로지스틱함수라고도 하며 x 값의 변화에 따라 0에서 1까지의 값을 출력하는 S자형 함수이다.


출처: https://cs231n.github.io/neural-networks-1/



$${h(x)} = {1 \over 1+e^{-x}}$$


한 노드에서 나온 정보인 $ x_1 $ 과 가중치 $ w_1 $ 가 오차항 $b$와 합쳐져 다른 노드에 전달되며 활성화 함수 $ {h(x)} = {1 \over 1+e^{-x}} $ 를 타고 변환된 값이 다른 노드에 전달한다.


위에서 알아본 구조들을 쌓아서 만든 것이 뉴럴 네트워크이다.



출처: https://en.wikipedia.org/wiki/Artificial_neural_network


  • 뉴럴 네트워크 구조


    • Input layer
    • Hidden layer
    • Output layer


주의해야 할 점은 사람의 뇌구조에서 영감을 얻었지만 매커니즘이 똑같지 않다. 그저 인간의 신경망을 모방했을 뿐이다.👺



그럼 어떻게 해서 딥러닝이란 개념이 나오게 되었는지 살펴보자. 딥러닝을 알기 위해서는 그 기초 모델인 인공신경망의 역사를 알아봐야 한다.




인공신경망의 역사



인공신경망의 구조를 최초로 제안한 것은 1943년 Warren McCulloch와 Walter Pitts가 발표한 A logical calculus of the ideas immanent in nervous activity 논문에서 인간의 신경 구조를 복잡한 스위치들이 연결된 네트워크로 표현한 것이다.



출처: http://solarisailab.com/archives/1206




1세대 : Perceptron의 등장 ( 1943 ~ 1986 )



그 후 1958년에 Frank Rosenblatt이 발표한 The perceptron: A probabilistic model for information storage and organization in the brain 논문에서 제시하면서 많은 주목을 받았는데, 이것이 퍼셉트론(Perceptron)이다. 이는 선형분류를 수행할 수 있는 모델로 인풋과 weight들의 곱을 모두 더한 뒤 활성함수를 적용하는 구조이다. 좀 있다 살펴볼 딥러닝 구조와 매우 흡사하다.



출처:http://solarisailab.com/archives/1206




2세대 : Multi-Layer Perceptrons(MLP)와 Backpropagation Algorithm의 등장과 ( 1986 ~ 2006 )



그러나 1969년 Marvin Minsky와 Seymour Papert의 Perceptrons: an introduction to computational geometry 이라는 책에서 Perceptron의 한계를 수학적으로 증명함으로써 열풍의 온도는 식어갔다. 그들이 주장하길 이 선형 분류기는 OR, AND문제는 잘 풀지만 XOR분류를 하지 못한다고 지적했다. 이때부터 인공신경망 및 인공지능의 연구의 암흑기가 찾아온다.


그러다가 1986년 McClelland, James L., David E. Rumelhart, and Geoffrey E. Hinto라는 인공지능 연구자들이 Parallel Distributed Processing 라는 책을 통해 Multi-Layer Perceptrons(MLP)과 Backpropagation Algorithm를 제시했다. Multi-Layer Perceptrons는 기존에 있던 퍼셉트론 구조에 Hidden layer를 중간에 추가하여 퍼셉트론이 풀지 못했던 XOR문제를 해결한 모델이다. 또한 Backpropagation(역전파) 라는 것은 층이 많아지면 많아질수록 기계가 학습할 weight와 Bias(오차항)의 학습이 어려워졌는데 역전파 알고리즘으로 이것을 해결했다.



출처: http://solarisailab.com/archives/1206



  • Backpropagation이란?


    • 출력부분에서 반대로 편미분을 사용하여 weight와 bias를 학습하면서 갱신하는 방법

너무 간단하게 설명했지만 다음 자료에서는 제대로 알아보자.



  • Backpropagation의 단계


    • feed forward 과정: 입력이 최종 출력까지 전달되고 최종 출력단에서 에러와 cost function을 구함
    • back forward(backpropagation) : 최종단에서 구한 출력과 실제 출력간의 차이(에러)를 반대 방향으로 전파시키면서 각 뉴런의 weight와 bias를 갱신

그러나 층이 깊어지면 깊어질수록 backpropagation 단계에서 데이터의 정보가 사라져 학습이 잘 이루어지지 않는 현상인 Vanishing Gradient 문제가 발생하게 된다. 또한 학습한 내용은 잘 처리하나 새로운 데이터를 잘 처리하지 못하는 점과 새로운 사실을 추론하는 것에 한계를 가지고 있었다.



이로 인해 오랜 기간, 인공신경망은 이용하기 어려워 거의 몰락에 가까운 상황에 이르렀으면 '인공신경망'이라는 단어는 사용하면 안되는 단어가 되었다고 한다.



변곡점 : 딥러닝의 등장


이 한계는 21C가 되어서야 풀리게 되었는데 2006년 캐나다 대학의 Geoffrey Hinton 교수가 깊은 층수의 신경망 학습시 사전 학습을 통해서 학습함으로써 Vanishing Gradient문제를 해결하였고, 2012년에 새로운 데이터를 처리하지 못하는 문제를 dropout 방법으로 해결할 수 있음을 발표했다.


이때부터 인공신경망은 새로운 이름인 Deep Learning이라는 명칭으로 불리게 되었다. 새로운 인공신경망의 바람을 넣어줄 바람으로 인공신경망의 한계의 역사를 극복한 새로운 역사를 덧입히는 첫 걸음인 셈이다. 그럼 딥러닝은 무슨 뜻일까?



  • Deep(깊은) Learning(학습)


    • '깊다'라는 것은 2개 이상의 Hidden layer가 있다는 것
    • 2개 이상의 Hidden layer를 가진 모델로 학습한다면 Deep Learning

즉 뉴럴 네트워크에 hidden layer를 깊게 둔 모델로 학습하는 것을 의미한다. 다양한 목적에 따라 다양한 신경망 구조가 만들어졌으며 다음엔 더 자세한 딥러닝의 개념과 대표 모델들을 살펴보도록 하자.



  • Deep learning model


    • Deep Belief Network
    • CNN(Convolutional Neural Networks)
    • RNN(Recurrent Neural Networks), Lstm(Long Short-Term Memory models)
    • Autoencoder
    • DQN(Deep-Q Network)
    • GAN(Generative Adversarial Network)
    • ...

출처: https://www.asimovinstitute.org/neural-network-zoo/






오늘은 이렇게 인공지능과 머신러닝과 딥러닝이란 무엇인지 간단히 알아봤다. 다음 시간에는 각 파트별로 좀 더 자세히 알아보도록 하자.😎


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함