UpstageAILab in 인강

6/18~7/1 총 2주에 걸쳐서 1주차에는 Deep Learning, 2주차에는 Pytorch를 인강을 통해 배우는 시간을 가지게 되었습니다.
전에 배운 ML과 비슷한 과정과 수업 내용이었지만 Deep Learing이 ML에 포함되어있기에 있는 일로 이전에 배운 것을 복습하는 시간이여서 좋았습니다.

text 출처 : 조민호 (2021). 인공지능의 역사, 분류 그리고 반전 방향에 관한 연구, 한국전자통신학회논문지

Deep Learning 개요

딥러닝 구성 요소

모델을 학습하기 위해 필요한 데이터(Data)
주어진 데이터를 원하는 결과로 변환하는 모델(Model)
모델의 결과에 대한 오차를 수치화하는 손실 함수(Loss Function)
손실 함수의 값이 최소가 되도록 모델의 파라미터를 조정하는 최적화 알고리즘(Optimization Algorithm)
성능 향상을 위한 기타 알고리즘

💡 성능 = 모델(구조) + 데이터 + 학습 방법(손실 함수, 최적화/기타 알고리즘)

딥러닝 파이프라인

모델이 데이터를 통해 추정한 값이 정답/목표와 최대한 가까워지도록(=손실 함수의 값이 최소가 되도록) 파라미터를 최적화 알고리즘을 적용하여 최적의 모델 파라미터를 찾는 과정

Deep Learning 모델 학습법

퍼셉트론

이전의 출력들에 가중치를 부여하여 합친 후, 그 값이 임계치를 넘기면 1을 출력

  • 가중치

    이전에 출력들 중 중요한 것에 가중치를 부여하여 출력에 큰 영향을 줄 수 있게 한다.

  • 편향

    해당 뉴런이 다른 뉴런에 비해 중요하다면 편향을 부여하여 임계치를 넘기기 쉽게 한다.

  • 선형 분리

    퍼셉트론을 일반화하면 선형식을 통한 분리로 이해할 수 있음 → 선형 분리 가능성
    퍼셉트론의 선형 분리 가능성으로 인해 AND, OR, NAND 등의 로직을 구현할 수 있게 됨
    NAND gate는 “universal for computation”으로 알려져 있고, 이는 어떤 모델이든 NAND gate의 조합으로 표현 가능하다.

    But, XOR논리 게이트는 하나의 퍼셉트론으로는 구현이 불가능함이 증명되었다.

    대신 여러층의 퍼셉트론을 활용하면 분리가 가능하며, 이는 다층 퍼셉트론의 비선형 분리 가능성이라고 한다. 즉 퍼셉트론의 조합으로 어떤 연산이든, 어떠한 입출력 관계든지 표현이 가능하다.

다층 퍼셉트론

Multi-Layer Perceptron, 줄여서 MLP라고 하며 사전적 정의는 퍼셉트론을 다중으로 연결하여 하나의 Network를 구성하는 것이다. 현재는 퍼셉트론을 사용하지 않더라도 MLP라고 불리기도 한다. 또한, Fully-Connected Layers(FCs)의 동의어로 사용된다.

❕Fully-Connected Layers의 의미는 이전에 모든 Layer들과 입력으로 들어오고 나가는 출력이 이후에 있는 모든 Layer에 연결되어 있을 때를 의미한다.

  • 활성화 함수

    입력 신호의 총합을 출력신호로 변환하는 함수

    활성화 함수를 사용하지 않는 다층 퍼셉트론 모형은 결국 가장 처음의 Layer와 가장 마지막의 Layer를 연결한 것과 같은 단순 선형식이 되어버리기 때문이다.

  • 시그모이드 함수(Sigmoid Function)

    연산 과정 전체를 미분 가능하게 만드는게 큰 목적 → 역전파 기접과 연관

MLP의 구조

  • 노드(node)/뉴런(neuron) : Transition (z) + Activation Function
  • 레이어/층(Layer) MLP에서 레이어 수는 보통 (은닉층 수 +1)개를 의미
    • 입력층 (input Layer)
    • 은닉층 (hidden Layer)
    • 출력층 (output Layer)
  • 엣지(edge), 커넥션 (connection) : 가중치(weight)를 의미

이외에 경사하강법, 역전파, 손실함수 등이 있습니다.

Pytorch

Pytorch는 Deep Learning에 사용되는 모델을 좀더 정형화해서 별다른 설정 없이 사용할 수 있게 하는 여러 함수를 내장한 라이브러리입니다. 아무래도 Deep Learning에 필요한 GPU등을 설정해야 유의미하게 사용할 수 있어서 처음에는 설정부터 설명하는 인강이 있었습니다.
다양한 기능이 있지만 그중 대표적으로 DNN(Deep Neural Network), CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등이 있습니다.

DNN

Deep Neural Network, 줄여서 DNN이라 하는 신경망은 다른 신경망에 비교했을 때 다수의 은닉층을 가짐으로 복잡한 비선형 관계를 학습할 수 있는 신경망입니다. 복잡한 패턴을 학습하는데 주로 사용됩니다.

CNN

Convolutional Neural Network, 줄여서 CNN이라 하는 신경망은 주로 이미지 및 비디오 처리에 사용되는 신경망으로 convolutional layers, pooling layers, fully connected layers로 구성되어 있습니다.

RNN

Recurrent Neural Network, 줄여서 RNN은 순차적 데이터 예를 들어 시간 순서대로 이루어진 데이터를 처리하는데 사용되는 신경망입니다. 순환 구조를 통해 이전에 입력된 정보가 현재 처리에 영향을 줍니다. RNN의 한계인 장기 의존성 문제를 극복하기 위해 LSTM(Long Shork-Term Memory)와 GRU(Gated Recurrent Unit) 같은 변형 신경망이 개발되었습니다.

후일담

이제는 실강보다는 인강 위주로 구성되어 있는 수업이 주를 이루고 있습니다. 심지어 내용도 어려워지는데요... 좀 더 열심히 해야겟지요...

0개의 댓글