Deep Learning 특강 - day 1

Seogyu Gim·2020년 11월 18일
0

목차

  1. 인공지능 기초 이론
  2. 딥러닝 기초 이론
  3. Keras를 이용한 딥러닝 구현

인공지능 기초 이론


1. 인공지능의 정의

인공지능은 인간의 학습능력, 추론능력, 지각능력, 자연언어의 이해능력 등을 컴퓨터 프로그램으로 실현한 기술이다. 하나의 인프라 기술이기도 하다. 인간을 포함한 동물이 갖고 있는 지능 즉, natural intelligence와는 다른 개념이다.

2. 인공지능 예시

  1. Everybody dance now!
    인공지능을 이용하여 Source의 춤 동작을 Target에게 적용시켜 마치 실제로 춤을 추는 것 같은 영상을 만들어줌

  2. 알파고
    바둑을 둘 수 있게 함

  3. 모나리자 얼굴 변형
    표정을 변하게 할 수 있음

  4. 자율주행
    운전을 할 수 있게 함

  5. 인공지능 + 로보트
    ex. 큐브를 할 수 있게 함

3. AI2020 Hottest

GPT-3

Generative Pre-trained Transformer 3는 딥 러닝을 사용하여 인간과 유사한 텍스트를 생성하는 자기 회귀 언어 모델입니다. 샌프란시스코에 기반을 둔 인공 지능 연구소 인 OpenAI가 만든 GPT-n 시리즈의 3 세대 언어 예측 모델입니다.
ex) 검색, Q&A, 채팅, 대화, 문장생성, 프로그래밍, 번역

사용할 툴: 주피터 노트북

주피터는 코드조각별로 실행시킬 수 있는 툴이었다. UI가 잘 되어 있어서 개발에 익숙치않은 딥러닝개발자에게 유용하다고 한다. 가상환경과 폴더를 파인더처럼 볼 수 있어서 실제로 편리했다.

4. Good Old-Fashion AI(GOFAI) vs Machine Learning

  • if - then 구문으로 구현
    • 룰 엔진
    • 전문가 시스템
    • 지식 그래프
    • 심볼릭 AI
  • 데이터를 가지고 학습하여 프로그램을 완성
    • SVM
    • Decision Tree
    • Recommendation
    • XGBoost
    • 인공신경망(Artificial Neural Network)
    • 딥러닝(Deep Neural Network)
      • MLP(Multi Layer Perceptron)
      • CNN(Convolutional Neural Network)
      • RNN(Recurrent Neural Network)
      • Reinforcement Learning
      • GAN

5. 머신러닝, 딥러닝, 데이터과학

  • AI > 머신러닝 > 딥러닝
  • 인공지능이 가장 포괄적인 단어
  • 딥러닝의 성과가 좋고 많이 사용됨에 따라 머신러닝이라는 용어는 딥러닝을 제외한 나머지 머신러닝 프로그램만을 의미하기도 한다.
  • 통계적인 분석 방법론과 빅데이터를 기반으로 한 데이터 분석 및 정보와 지식을 추출하는 광범위한 방법론을 데이터과학이라 하며 이는 딥러닝과 기계학습의 기반이 된다.

머신러닝 프로그램

  • 머신러닝 프로그램을 비롯한 인공지능 시스템은 컴퓨터 소프트웨어이다.
  • 컴퓨터 소프트웨어가 할 수 있는 일은 숫자 데이터를 처리(계산)하는 일 뿐이다.
  • 즉, 인공지능 프로그램의 기술적 본질은 해결하고자 하는 문제를 숫자 데이터로 표현하고 이 데이터들을 계산하여 사람 대신 판단이나 결정을 하도록 하는 것이다.

머신러닝 프로그램 특징

  • 전통적인 프로그램 방식과는 좀 다른 방식
  • 샘플과 기대값이 주어졌을 때 데이터 처리 작업을 위한 실행 규칙을 찾는 것

머신러닝의 종류

  • 지도학습(Supervised Learning)
    분류모델을 먼저 제시하고 학습
    ex. 개 or 고양이 분류해주는 모델(Classification)
  • 비지도학습(Unsupervised Learning)
    선행 모델 없이 프로그램 스스로 학습
    ex. 구글 뉴스(어제 스포츠 뉴스봤으면, 스포츠 뉴스를 많이 띄운다)
  • 생성망(GAN)
  • 강화학습(Reinforcement Learning)
    • AlphaGo

인공지능에서의 데이터 처리

  • 이미지 데이터 다루기
    • 컴퓨터 프로그램에서 모든 데이터는 숫자로 이루어져 있다.
    • 밝기에 따라 세기를 숫자로 나타냄
    • 각 픽셀마다 RGB 정보를 가지고 있음
    • 컴퓨터가 할 수 있는 것은 숫자의 계산 뿐

MNIST

  • 인공지능 연구의 권위자 LeCun교수가 만든 데이터셋
  • 딥러닝을 공부할 때 반드시 거쳐야 할 Hello World 같은 존재
  • 60000개의 Training Set과 10000개의 Test Set이 있다.

딥러닝 기초 이론

1. 인공신경망

  • Neuron : 생물학적 신경세포

    • 사람의 뇌가 어떻게 정보를 처리하는 지 연구(생물학, 의학)
    • 뇌의 구조연구
    • 뉴런의 발견
  • Artificial Neuron: 인공 뉴런

    • 생물의 뇌를 이루는 뉴런에서 영감을 얻어서 인공뉴런을 구상
    • 뉴런과 비슷한 모양으로 신호를 전달할 수 있는 단위들을 연결하여 정보를 처리하면 뇌세포의 기능을 흉내낼 수 있을까?
    • 인공뉴런(1943년)
    • 워런 맥컬록과 월터 피츠는 수학과 임계논리(threshold logic)라 불리는 알고리즘을 바탕으로 신경망을 위한 계산학 모델을 만들었다.

2. 퍼셉트론(perceptron)

  • 프랭크 로센블랫, 퍼셉트론 발명(1957)
  • The Perceptron : A Perceiving and Recognizing Automation(인식 자동화 장치)
  • 간단한 인공뉴런
  • Perceptron은 초평면(Hyper plane)을 사용해 두 클래스를 구분하는 선형 이진 분류기(linear binary classifier)다.
  • Weight, Bias 학습 가능: Perceptron 학습 알고리즘은 일련의 가중치 및 편향 집합이 존재할 경우, 모든 입력을 정확하게 분류하는 가중치 및 편향 집합을 가져오도록 보장한다.

퍼셉트론 학습 알고리즘(Perceptron Learning Algorithm; PLA)

  • ax + by(가중치, Weight) + c(편향, Bias) → 파라미터(Parameter)
""" Python code """
def perceptron(X,Y,iter):
	theta = np.array([0,0])
    theta_0 = 0
    
    for t in range(iter):
    	print("t: ", t)
    	for i in range((X.shape[0])):
        	if Y[i] * (np.dot(theta, X[i]) + theta_0) <= 0:
              theta = theta + np.dot(Y[i],X[i])
              theta_0 = theta_0 + Y[i]
    return theta, theta_0

3. 심층신경망(Deep Neural Network ~= 딥러닝)

  • 퍼센트론 학습 알고리즘의 한계
    • 선형이 아닌 분류는 불가능하다
  • 비선형 분류는 다층 퍼셉트론으로 가능
    • 퍼셉트론에 다른 퍼셉트론을 덧붙여서 층을 쌓으면 비선형 분류가 가능하다.

단일 신경망(Single-layer Neural Network)

심층 신경망(Deep Neural Network; DNN)

다층 퍼셉트론의 학습

  • 퍼셉트론의 파라미터 업데이트 방식으로는 다층 퍼셉트론을 학습할 수 없다.
  • 1980년대 역전파(Backpropagation) 알고리즘으로 다층 퍼셉트론을 학습할 수 있는 문제해결,
  • 경사 해결법(Gradient Descent): 편미분을 통해서 Gradient를 찾아가는 방법

심층신경망의 학습

  • 손실함수(Loss Function)
    • 하나의 데이터 포인트에 대하여 예측값과 레이블간의 차이를 구하는 함수, 보통 예측값과 레이블이 벡터이므로 차이를 정하는 방법 (얼마나 틀렸는지 기준을 정해주는 함수?)
  • 목적함수(objective function), 비용함수(Cost Function)
    • 전체 데이터셋에 대한 손실함수의 평균
    • least square error: 최소제곱법

손실함수의 종류

  • 평균 제곱 계열
    • 벡터값이 거리를 계산하므로 거리개념이 중요한 회귀에서 주로 사용된다
      • mean squared error: 평균 제곱 오차
      • mean absolute error: 평균 절대 오차(실제값과 예측값 차이의 절댓값 평균)
  • 교차 엔트로피 게열
    • 벡터값이 거리개념이 적절하지 않은 분류 문제에서 주로 사용된다.
      • categorical cross entropy: 범주형 교차 엔트로피(일반적인 분류)
      • binary cross entropy: 이항교차 엔트로피(두개의 클래스 중에서 예측할 때)

활성함수(Activation Function)

  • 입력데이터와 파라미터를 곱하여 합한 값을 다음 단계로 출력하기 전에 처리하기 위한 함수, 은닉층에서의 역할을 이전 계층의 값을 활성화하여 다음 단계로 전달할 것인지를 결정하는 역할을 하고, 출력층에서의 역할을 최종 결과 값을 목적에 맞게 출력하기 위하여 사용한다.
    • Sigmoid (0~1)
    • Hyperbolic Tangent (-1 ~ 1):자연어 처리에서 사용, 이미지 처리에서 사용안할듯
    • ReLU(Rectified Linear Unit)
    • Leaky ReLU
    • Exponential LU

출력층의 활성함수와 손실함수

  • 출력층에서의 활성함수는 최종 결과값을 목적에 맞게 출력하기 위하여 사용하므로 아래와 같이 목적에 맞는 활성함수를 사용한다. 그리고 출력층의 활성함수가 결정되면 아래와 같이 손실함수를 선택할 수 있다.

    활성함수손실함수
    다중분류SoftmaxCategorical_cross_entropy
    이진분류SigmoidBinary_cross_entropy
    회귀Linearmean_squared_error, mean_absolute_error

최적화(Optimizer)

  • 목적함수가 최소가 되도록 파라미터들을 업데이트 하는 방법
    • SGD(Stochastic Gradient Descent)
      • Adam(Adaptive Moments)
      • RMSprop(Root Mean Squared Propagation)

Keras를 이용한 딥러닝 구현

  • Keras를 사용하면 다음과 같은 순서로 신경망을 구성할 수 있다.
  1. 네트워크 모델 설정
    • 모델클래스 객체생성(Sequential API, Function API)
    • 네트워크 계층(Layer) 구성
    • 입력단부터 순차적으로 추가한다
    • 레이어는 출력 뉴런 갯수를 첫번째 인수로 받는다
    • 최초의 레이어는 input_dim 인수로 입력크기를 설정해야한다
    • activation 인수로 활성화함수 설정
  2. compile 메서드로 모형완성
    • loss인수로 비용함수 설정
    • optimizer 인수로 최적화 알고리즘 설정
    • metrics 인수로 트레이닝 단계에서 기록할 성능 기준 설정
  3. fit 메서드로 트레이닝
    • nb_epoch로 에포크(epoch)횟수 설정, batch_size 로 배치크기(batch_size)설정 // epoch: 반복횟수?

1. 딥러닝 네트워크 모델의 종류

  1. MLP(Multi-Layer Perceptron): 다층 퍼셉트론
  2. RNN(Recurrent Neural Network): 순환 신경망
  3. CNN(Convolutional Neural Network): 합성곱 신경망

2. Dense = Fully Connected

  • 전단계(입력)층의 모든 차원에 의해서 다음 단계(출력)의 차원의 값이 계산되는 연결층
  • 이런 층들로 구성된 네트워크를 Fully Connected Layer(완전 연결 계층)또는 Densely Connected Layer(밀집 연결 계층)라고 한다.

3. 텐서 계산

  • 스칼라 - 하나의 수 : 23
  • 벡터 - 여러 수의 묶음(순서 있음), 배열: [23,43,56,1,3,9,0]
  • 행렬 - 2차원 수의 묶음(순서 있음), 2차원 배열
  • 텐서, 2차원 이상의 n차원 행렬, 앞의 모두를 포함

4. 희소벡터(Sparse Vector)와 밀집벡터(Dense Vector)

  • 강아지:1, 고양이:2, 사자:3, 호랑이:4, 돼지:5
    ex. 희소벡터 - 강아지: [1,0,0,0,0]

5. One-hot Vector

원-핫 인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1, 나머지에 0을 부여하는 단어의 벡터 표현 방식입니다. 이렇게 표현된 원-핫 벡터(One-hot vector)라고 합니다.

6. Softmax(소프트맥스)

입력받은 값을 출력으로 0~1사이의 값으로 모두 정규화하며 출력값들의 총합은 항상 1이 되는 특성을 가진 함수이다.

7. MNIST Dataset 소개

MNIST(Modified National Institute of Standards and Technology)는 인공지능 연구 권위자 LeCun 교수가 만든 데이터 셋이고 현재 딥러닝을 공부할 때 반드시 거쳐야할 Hello, World같은 존재입니다.

8. MNIST Dataset 다운로드하는 Keras Code
#tf version 2.*
(X_train, Y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() 
profile
의미 있는 일을 하고싶은 개발자

0개의 댓글