본문 바로가기
SW/인공지능

[인공지능] 딥러닝이란? 심층학습/딥러닝 기본 개념에 대해 알아보자!

by 미래미래로 2020. 12. 12.
728x90
반응형

인공지능? 머신러닝? 딥러닝?

  • 인공지능이란?

    인공지능을 처음 정의한 John McCarthy는 '인공지능'을 인텔리전트한 기계를 만드는 과학과 공학이라고 정의했다. 
    즉, 인간의 지능을 가진 인텔리전트한 기계를 인공적으로 구현한 컴퓨터 프로그램/시스템이라고 생각하면 된다.

    전 세계에서 사용하는 인공지능의 교재인 '인공지능-현대적 접근(Artificial intelligence)' 라는 교재에서는 인공지능을 4가지 관점에서 정의한다. 

    '인간처럼 생각하는', '인간처럼 행동하는', '이성적으로 생각하는', '이성적으로 행동하는'
    4가지를 합쳐 생각해보면 인간의 지능을 가지고 이성적으로 생각하고 행동하는 컴퓨터 시스템 이라고 생각 할 수 있을 것 같다. 

    예를 들어 인공지능 '알파고'를 생각해보자. 알파고는 사람처럼 바둑을 둘 수 있는 지능을 가진 인공적으로 구현한 컴퓨터 프로그램이다. '알파고'는 9단 이세돌 선수를 이기는 등 사람보다 뛰어난 성능을 발휘했다.

  • 머신러닝이란?

    1959년 아서 사무엘은 '머신러닝'을 컴퓨터가 명시적으로 프로그램되지 않고도 학습할 수 있도록 하는 연구분야라고 정의 하였고,
    카네기 멜론 대학교의 톰 미첼 교슈는 만약 어떤 작업 T에서 경험 E를 토해 성능 측정 방법인 P로 성능을 측정했을 때 성능 향상이 보이면, 컴퓨터가 학습을 한다고 정의 하였다. 

    즉 머신러닝(기계학습)은 인공지능을 구현하는 방법 중 하나로, 컴퓨터(기계)가 경험으로 통해 스스로 학습하도록 하는 컴퓨터 알고리즘이다. 

    예를 들어, 이메일 스팸 판단기를 생각해보자.

    전통적인 컴퓨터 프로그램은 이메일에 특정 문자/특수문자가 포함되어 있으면 스팸으로 판단하였다. 이렇게 되면 다른 문자가 스팸 이메일에 쓰이게 되면 스팸을 걸러낼 수 없다. 머신러닝 스팸 판단기는 단순 특정 문자가 포함된 것의 유무로 이메일의 스팸 여부를 판단하는 것이 아니다. 명시적으로 프로그램되지 않고도 이메일과, 이메일에 대한 스팸 유무를 학습해 머신러닝 모델을 만들면, 학습된 모델이 이메일의 스팸 여부를 알려줄 수 있다. 더 많은 스팸이메일 데이터가 학습될수록 더 좋은 성능을 나타낸다.

  • 딥러닝이란?

    머신러닝(기계학습)의 한 기법으로, 여러 층을 가진 신경망 모델을 사용하여 층을 학습하는 기법이다.
    입력층(Input layer)과 출력층(output layer) 사이에 여러개의 은닉층(hidden layer)로 이루어진 인공신경망으로, 생성자와 판별자  모형을 경쟁적으로 학습시켜 새로운 자료를 생성하는 비지도 학습 기반 생성 모형의 일종이다.

딥러닝의 구성

딥러닝은 크게 학습단계와 테스트 단계로 나뉜다. 

  • 학습단계
    학습단계에서는 학습 데이터 셋으로 네트워크를 학습하는 것이 목적이다. 학습을 위해 학습 input 데이터를 넣어주고 output을 낸다. output과 실제 정답을 비교해 얼마나 틀렸는지에 대한 손실함수(loss)를 내고, loss 값을 최적화 기법을 이용해 줄이는방법으로 네트워크를 학습한다. 이 과정을 반복하다 보면 네트워크가 좋은 네트워크가 된다.
  • 테스트 단계
    학습된 네트워크를 테스트 단계에 사용한다. 테스트 단계에서는 학습에 쓰이지 않은 데이터를 사용해 학습된 네트워크에 통과시키고, 평가 지표를 활용해 네트워크가 좋은지를 평가한다. 

신경망 연구의 역사

  • 1943 매컬럭(Warren McCulloch)과 피츠(Walter Pits)로 부터 시작됨(인간 두뇌에 관한 최초의 논리적 모델링)
  • 1957 로젠블라트 퍼셉트론이라는 최초의 신경망 개발
  • XOR 문제를 해결하지 못하면서 첫 빙하기 시작
  • 1989년 얀 르쿤과 동료들이 역전파 알고리즘(Back Propagation) 소개 XOR 문제 해결
  • 신경망의 깊이가 깊어질수록 원하는 결과를 얻을 수 없었고, 파라미터 최적화의 근거 없어 두 번째 빙하기 시작
  • 본격적으로 딥러닝이라는 용어를 사용한 것은 2000년대,
    제프리 힌튼 교수가 weight의 초기값을 설정하면 깊은 신경망 학습이 가능하다는 것을 보임 
  • 2012년 ImageNet 대회에서 AlexNet 기반의 딥러닝 기반 알고리즘으로 84.7%의 정확도를 보이면서 딥러닝 주목
  • 하드웨어의 발전으로 딥러닝에서의 복잡한 행렬 연산에 소요되는 시간이 단축되어 발전중

딥러닝의 종류

  • 순환신경망(RNN)
    • 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터, 앞 뒤 데이터 간 연관성이 있는 데이터 셋을 학습하기 위한 인공신경망
    • 주로 글자나 문장 완성, 음성인식 및 번역시스템, 주식 예측 시스템에 사용
    •  은닉층에서 활성함수로 나온 값을 출력층 방향으로 내보내며, 다시 은닉층 다음 계산의 입력 값으로 사용
          (은닉층이 이전 데이터를 참조)
  • 강화학습-Reinforced Learning
    • 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화 하는 행동을 선택하는 방법
    • 게임이론, 제어리론, 운용 과학, 정보이론 시뮬레이션 기반 최적화 등의 분야에서 연구됨
    • 강화학습은 입출력 쌍으로 이루어진 훈련 집합이 제시되지 않으며, 잘못된 행동에 대해서도 명시적으로 정정이 일어나지 않는 점이 일반적인 지도 학습과 다름
  • Generative Adversarial Network(GAN)
    • 비지도 학습에 사용되는 인공지능 알고리즘으로, 생성자와 식별자가 서로 경쟁하여 데이터를 생성하는 모델
    • 생성자와 구분자가 서로 대립하여, 서로의 성능을 점차 개선해 나가는 쪽으로 학습이 진행됨
    • 2014년 이안 굿펠로우에 의해 발표되었으며 이미지 생성, natural language processing(NLP)등에 사용

 

딥러닝 소프트웨어

  • Tensorflow
    • 머신러닝의 위한 end to end 오픈소스 플랫폼
    • 구글브레인팀 개발, 현재 가장 많은 사람이 사용 중
  • Caffe
    • UC 버클리에서 개발된 딥러닝 프레임워크
    • Python 인터페이스를 사용하여 C++로 작성
  • Theano
    • 딥러닝 알고리즘을 파이썬으로 쉽게 구현할 수 있도록 해줌
  • 파이토치
    • 페이스북과 구글 딥마인드가 사용
    • Python을 위한 오픈소스 머신러닝 라이브러리
    • Torch를 기반으로 하며, 자연어 처리와 같은 애플리케이션을 위해 사용됨

 

REF

ko.wikipedia.org/wiki/%EB%94%A5_%EB%9F%AC%EB%8B%9D

ko.wikipedia.org/wiki/%EA%B0%95%ED%99%94_%ED%95%99%EC%8A%B5

m.blog.naver.com/tjdudwo93/221072421443

 

728x90
반응형

'SW > 인공지능' 카테고리의 다른 글

[데이터분석] 빅데이터란?  (0) 2020.07.09
[인공지능] L1/L2 Norm, L1/L2 Loss  (1) 2020.07.04

댓글