AI 엔지니어 기초 다지기 - 5주차 - 뉴럴 네트워크 - MLP

hyonun·2024년 2월 14일
0

목적

뉴럴 네트워크란건 어떤건지?
뉴럴 네트워크중에서 가장 간단한 구조인 Multi-Layer Perceptron이 어떤건지?
딥러닝을 학습할때 학습이 어떤걸 가지는지? 알아보자.

Neural Networks

  • 뇌신경망
    포유류의 신경망을 모방하고자 하는 시스템.

사람의 지능을 모방하는 방법론이라고 굳이 설명할 필요는없음

새를 모방해서 날개를 만들자.

  • 라이트형제가 비행기를 만들어서 시작했다.
  • 사실 새처럼 생기지는 않았다.

우리가 하늘을 날고싶다고 해서 새처럼 날 필요가 없는것

우리가 빠르게 움직이기 위해서 치타처럼 움직일 필요가 없듯이,
인간의 뇌를 똑같이 모방할 필요가 없다.

뉴럴 네트워크도 동작방법을 모방하는것으로 시작했을지 모르지만
지금의 발전양상을 보면 뇌를 모방했던 시작점과는 너무많이 달라졌다.

비선형 연산이 반복적으로 일어나는걸 뉴럴네트워크라고 부르겠다.가 오히려 오해를 덜 살 수 있다고 생각한다.

가장 간단한 뉴럴네트워크

Linear Neural networks

  • 리니어 리그레션

    • Data
    • Model
    • Loss

어떻게 W와 B를 찾을까?

W,B의 최솟값을 구할 수 있다. 하지만 많은 제약 조건이 필요하다.

목적은 loss펑션을 줄이는게 목표이니, 나의 파라미터가 어느방향으로 움직였을때 loss function이 줄어드는지를 찾는다.

loss가 음수로 변하는 파라미터를 밀게되면 바뀌게 된다.

그레디언트 디센트(감소), 어센트(증가) 하여 w와 b를 구한다.

하지만 뉴럴네트워크는 리니어한 변환 + non리니어한 변환이 포함된다.
한단만 있는게 아니라 여러 레이어가 겹칠텐데
마지막에 나오는 loss function을 전체 파라미터로 다 미분을해야하는게
back propagation 이다.

여기서 에타(n처럼생긴거)의 Stepsize 가 한번에 이동하는 스텝사이즈를 의미하는데
너무키우면 학습이 아예 되지않고, 0에 가까워도 학습이 아예안되니 적절한 stepsize를 잡는것이 중요하다.

세상은 선형적으로만 이루어져 있지 않다.

예를들어 100차원 -> 20차원으로 가는 행렬이다.
이런 변환자체를 어파인 트랜스폼이라고 한다.
이런 행렬에대한 해석이 뭐냐면
두개의 벡터 스페이스의 변환이라고 생각하면 좋다.
네트워크의 곱 !

딥러닝은 결국 이런 네트워크를 여러개를 쌓겠다 라는 말이다.

그래서 중간에 Nonlinear transform
이런 네트워크가 표현할수있는 표현력을 최대한 극대화하기 위해서
선형결합을 랜덤반복하는게 아니라 비선형결합 변환을 거쳐
거기서 나온 결과를 다시 리니어 결합을 통해서 더많은 표현력을 가지게 만든다.

그게 보통의 뉴럴네트워크 방식이다.

그래서 어떤 넌리니어트랜스폼을 사용해야 되냐?

Activation Function 종류

  • ReLu
  • Sigmoid
  • Hyperbolic Tangent
    등이 있다.

Beyond Linear Neural Networks

  • 인간의 뇌를 본따서 잘된것이냐?
    • 히든레이어가 1개인 뉴럴네트워크의 표현력은 우리가 생각할수있는 연속적인 function을 다 포함한다.

이런걸 만족하는 뉴럴네트워크가 있다를 말하는거지, 내가 학습시킨 뉴럴네트워크가 이런 성질을 가지고있다 라고 생각하면 안된다.

표현력은 있지만, 찾을 수는 없다.

Multi-Layer Perceptron

여러 히든레이어가 존재할 수 있다.

  • 그럼 loss function은?

    • Regression Task

      • 제곱을 최소화 시키는것이랑 절대값을 최소화 시키는것은 결과값이 달라진다.(1노름, 2노름을 말하는 듯)
      • 이러한 MSE(Mean squared Error)는 항상 도움이 되지 않을 수 있다.
      • 로스 펑션이 어떤 성질을 가지고있고 왜 내가 원하는 결과를 얻을 수 있는지를 말할 수 있어야한다.
    • Classification Task

      • 내 뉴럴네트워크의 해당하는 클래스 값만 높이겠다 라는 말이다.
      • 여기서 키운다는말(높인다)은 분류를 한다고 했을때 100, 1000과 같은 절대 값이 중요한게 아니라, 상대값이 중요하다. 정확도 관점에서는 다른 값들 대비 높기만 하면 된다.
      • 이걸 수학적으로 표현하기 까다로우니, 크로스 엔트로피 로스펑션이 분류문제를 푸는데 최적일까? 라는 의문을 가져보자.
    • Probabilistic Task

      • 아웃풋이 숫자가아니라 확률문제다. 사람을 얼굴을 보고 이사람의 나이를 맞추고싶다. 주로 MLE 로스 펑션을 사용한다.
profile
비전공자 + 타업계 경력2년의 IT 개발자 도전기~

0개의 댓글