[ML] 인공신경망(ANN)

최윤진·2023년 5월 11일
post-thumbnail

본 내용은 과학기술정보통신부, 정보통신기획평가원의 'SW중심대학'의 결과물 강의를 보고 공부한 내용을 정리한 것입니다.

해당 게시물과 다음 게시글을 함께 보면 이해가 편리할 것임

📍인공신경망(ANN,Artificial Neural Network)

  • 인간의 두뇌를 구성하는 신경세포인 뉴런의 연결 구조를 흉내 내서 만든 머신러닝 모델
  • 뉴런은 수상돌기로부터 입력받는 신호의 총합이 일정 값 이상(역치)이 되면 축삭돌기로 신호를 전달하는 구조를 가짐
    (역치 이상이 아니면 신호 X)
    👉 이 개념을 컴퓨터(프로그래밍)에 접목 시켜 보자!

📍 TLU (Threshold Logic Unit)

  • 1943년 워렌 맥컬록과 월터 피츠는 뉴런을 모델로 한 인공뉴런 TLU를 제안
  • 뉴런의 수상돌기처럼 외부로부터 신호들을 입력받아 그 총합을 구하는 부분과, 입력 신호들의 총합이 어느 임계값 이상일 경우에만 신호를 출력하는 부분으로 구성

🔍 활성화 함수

  • 입력 신호들의 총합을 임계값과 비교한 뒤 출력을 결정하는 함수
  • 임계값과 비교해 0과 1로 구분
    = 임력 신호의 총합이 임계값보다 크면 1, 아니면 0을 출력

🔍 인공뉴런 TLU의 개념

  • 입력값 X1과 X2를 더한 값이 임계값 0보다 같거나 크면 출력값 Y를 1로 출력, 0보다 작으면 0으로 출력

💡 OR(논리합)과 (AND)논리곱의 연산

  • OR :
    - OR은 입력받은 두 진리값 중 하나라도 참이면 결과를 으로 계산하는 연산
    • 입력받은 두 진리값이 모두 거짓일 때 = 거짓
  • AND :
    - AND는 입력받은 두 진리값 중 하나라도 거짓이면 결과를 거짓으로 계산하는 연산
    • 입력받은 두 진리값이 모두 참

🔍 TLU의 논리연산 구현

  • TLU를 활용하면 논리연산인 논리합(OR)과 논리곱(AND)를 구현할 수 있음.

  • 참 또는 거짓의 두 진리값을 입력받아 새로운 진리값(0/1)을 계산

  • TLU는 활성화 함수의 임계값θ을 어떤 값으로 정하느냐에 따라 구현하는 논리 연산이 결정됨
    - 임계값θ을 0.5로 하면?
    X1 + X2 >= 0.5 이면 출력값 Y는 1(참)
    X1 + X2 < 0.5 이면 출력값 Y는 0(거짓)
    임계값θ 를 적당한 값으로 지정하는게 중요

임계값θ = 하이퍼파라미터!
출력값 Y = 논리 연산 결과

📍 퍼셉트론

  • TLU를 기반으로 하며, 가중치(Weight)라는 개념을 추가함
  • 각 입력값에 고유한 가중치를 부여하고, 입력값에 가중치를 곱한 값의 총합을 임계값과 비교해 출력값을 결정
    (총합을 활성화함수로 넘기고 θ보다 큰지 작은지 결정해서 출력값 결정해준 다는 것)
    👉 가중치가 클수록 결과에 영향
  • 임계값은 0으로 정해 놓고, 가중치를 적절히 선택해 논리합 또는 논리곱을 결정
    👉 퍼셉트론으로 구성된 인공신경망에서 학습이란 입력의 가중치를 결정하는 작업임

🔍 퍼셉트론 동작 원리

  • 입력값에 가중치를 곱한 값들의 총합이 0 이상이면 Y를 1, 아니면 0

    (EX. W0= -10이면 AND 연산이 됨)

💡 퍼셉트론은 배타적 논리합(XOR) 구현 불가능

배타적 논리합(XOR) : 두 입력값이 서로 다를 때만 참을 갖는 논리연산

🔍 다층 퍼셉트론(MLP, Multi Layer Perceptron)

  • 퍼셉트론의 입력계층과 출력계층 사이에 은닉계층을 추가한 것
  • 단층 퍼셉트론으로는 해결하지 못한 배타적 논리합의 연산을 구현 가능!
    퍼셉트론을 중복해서 사용했더니 XOR 구현 성공!
    하지만 은닉계층의 가중치를 학습시킬 방법이 X
    (수치미분방식은 너무 많은 시간이 걸려서 신경망 적용 X)
    👉 오차 역전파 알고리즘으로 퍼셉트론 한계 극복

🔍 오차 역전파 알고리즘

  • 출력 계층에서 계산된 오차값을 입력 계층 방향으로 다시 보내 가중치를 수정하는 방법

  • 가중치가 높은 입력값이 오차 발생에 더 큰 영향을 줬다고 가정해서 보다 더 큰 수정의 책임을 부여 시킴

  • 덧셈노드

  • 곱셈노드

💡 Diminishing Gradient(사라지는 경사도)문제

  • 여러 계층을 역으로 올라가다보니 전파되는 오차 값이 현저히 작아져 학습 효과가 사라짐
    👉 은닉계층 개수가 늘어날 때 큰 단점
    (심층신경망- 은닉계층이 2개 이상인 인공신경망도)
    👉 드롭아웃 기법으로 극복
profile
yunjin.log

0개의 댓글