본문 바로가기
데이터

[머신러닝, 딥러닝] 인공신경망에 대한 개략적인 이해

by dwoi 2023. 5. 1.

딥러닝의 기본 개념인 인공신경망에 대해서 개략적으로 알아보고 그에 대해서 정리한 글

 

목차

     


    인공신경망

    사진: Unsplash 의 Alina Grubnyak

     

    정보 처리하고자 함수를 인간의 뇌로 처리로 해보자는 개념에서 출발

    → 뇌는 여러 뉴런들의 조합으로 처리되고 있음.

     


    퍼셉트론

    1.1. 단층 퍼셉트론

    단일 뉴런 : 수상돌기를 통해 입력신호를 받고 이 신호를 축삭돌기를 통해 뉴런으로 신호를 보냄.

    → 이를 수학적으로 만들 모델이 단층 퍼셉트론

     

    1. 입력 변수들을 선형결합
    2. 선형결합 값의 변환한 후 이를 전달 (Activiation Function을 통해 변환)

     

    Activitaion Function (선형 또는 비선형으로 전)

    이는 정보를 얼만큼 다음 레이어로 전달할지를 결정하는 함수

     

    → 단층만으로는 복잡한 모델에 대한 해석이 불가

    → 이를 퍼셉트론을 늘려서 해결.

     

     

    1.2. 다층 퍼셉트론

    입력 데이터를 히든 레이어로 전달

    히든레이어에는 여러 가지의 활성함수가 존재

    이를 다시 선형으로 합성해서 out layer로 전달

    → hidden layer가 늘어나면서 복잡해짐

    → 딥러닝의 기본 구

     


     

    다층 퍼셉트론의 학습

    1. 비용함수 또는 목적함수 정의

    2. 비용함수 또는 목적함수를 이용해 최적화 문제로 변환

    3. 최적화 문제 풀기

    → 추정해야 할 모델의 파라미터가 비선형 결합 형태로 되어 있음.

    근사해를 구해야 함. 

    경사하강법

     

    오차역전파

    합성함수의 꼴로 나타나므로 규칙적으로 미분되는 꼴이 나타남.

    Theano/tesorflow/torch 등의 라이브러리는 gradient를 간편하게 계산해주는 기능을 포함

    반복적으로 나타는 부분은 프로그래밍 시 효율적으로 처리하는 걸 생각해야 함.

     

    → 이제 미분을 반복해서 시행하여 경사하강법을 진행하는게 인공신경망 학습의 방법

     

    ◆ 오차역전파

    비용 함수의 가중치에 대한 기울기를 수치 미분으로 계산하는 건 시간이 너무 오래 걸림

    → 비용 함수 편미분 기울기를 순전파의 반대 방향으로 전파

    chain rule을 통해 국소 미분으로 분해하는 계산하는 방식!

     

    이슈 1. 속도

    인공신경망 학습이 속도가 느림.

    계산복잡도 이슈!

     

    해결방법

    • 배치경사하강법(BGD)
      • 모든 훈련 데이터를 이용해서 필요한 계산을 다하고 업데이트
    • 확률적 경사하강법(SGD)
      • 확률적으로 선택된 하나의 예로 필요한 계산을 다하고 업데이트 시키는 방법.
    • 미니배치 경사하강법(MBGD)
      • 배치크기 훈련 데이터를 이용해서 필요한 계산을 다하고 업데이트 시키는 방법
      • 보통 default로 사용

     

    이슈 2. 경사하강법

    gradient가 0에 도달하면 더 이상 업데이트가 되지 않는다.

    하지만 gradient가 0이라고 해서 거기가 최소지점이라고는 얘기할 수 없다.

    → 적절한 학습률 선정

    → 다양한 경사하강법이 나타남.

     


     

    인공 신경망 여러 학습 이슈

    이슈 1. 기울기 소실(Vanishing Gradinet)

    layer가 많아질수록 chain rule에 의해 여러번 미분하게 됨.

    이 결과 값이 0에 가까워지는 현상이 발생

    즉 input layer근처의 데이터는 거의 학습이 되지 않는 현상을 말함.

    해결방법

    • sigmoid tanh 이외에 다른 활성함수를 활용

    이슈 2. 과소적합과 과대적합 (Overfitting/Underfitting)

    과소적합 : 학습이 부족해서 error가 매우 큼

    • ex. vanishing Gradient로 학습이 부족한 경우

    과적합 : error가 너무 적어서 다른 데이터셋이 들어오면 인식을 못하는 문제

    • 모델이 너무 복잡한 경우

     

    과적합 방지

    1. 정규화 (Regularization)

    • 비용함수 정의할때 Regularization을 추가
    • Regularization : 특정 변수에 대해 파라미터(가중치) 값을 줄여서 영향도를 줄이는 역할

     

    2. 드롭아웃(Drop out)

    • 학습 과정에서 일부러 특정 노드들에 연결된 가중치들은 업데이트를 하지 말자
    • 어떤 노드를 업데이트시키지 않을 것인가를 무작위로 그때그따 바꿔 가며 결

     

    3. 데이터 증강 (Data Augmentation)

    • 너무 적은 데이터셋을 통해 과적합이 되는거라면 데이터를 일부로 쪼개거나 약간 변형을 해줘서 증

     


     

    마무리

    큰 구조를 상시 파악하는게 중요!

     

     

    댓글