3, 신경망

ganta·2021년 1월 23일
0

딥러닝 기초이론

목록 보기
3/5
post-thumbnail

신경망


  • artificial neural network(ANN)이라고도 하며 기계학습과 인지과학에서 생물학의 신경망에서 영감을 얻은 통계학적 학습 알고리즘

  • 퍼셉트론과 신경망의 차이

    • 퍼셉트론 : 활성화 함수로 계단 함수를 사용한다.
    • 신경망 : 활성화 함수로 시그모이드 함수, ReLU함수등을 이용
  • 신경망의 구조

    • 입력층, 은닉층, 출력층으로 구성
  • 각각의 층을 거칠 때 마다 다음 층으로 값을 전달할 때 활성화 함수를 거쳐 값을 전달한다.

  • 활성화 함수

    • 입력 신호의 총합을 출력 신호로 변환해주는 함수(h()함수)
    • 계단함수, 시그모이드 함수, ReLU함수 등 다양한 함수들이 사용되어 값을 변환시켜 준다.
    • 이 함수들을 이용하여 신호를 변환 후 다음 뉴런에 전달
    • 이러한 비선형 함수를 사용하여 선형함수로써 구현하지 못한 로직들을 해결 할 수 있다.
    • 계단함수
      • x의 값이 0보다 작으면 0, 0보다 크면 1의 값
      • 임게값을 경계로 값이 변환이 됨(연속적이지 않음), 이로 인하여 값에 대하여 답의 유망한 정도의 파악이 유연하지 못하다.(예를 들어 1보다 2가 어느 분류 속성에 더 유망한 답이라 하여도 출력은 1값으로 같다.) - 이로 인한 퍼셉트론의 확장 버전으로 신경망 개념이 나옴
    • 시그모이드 함수
      • 0과 1의 사이에서 x값에 따라 다른 값의 실수값을 반환
      • 계단함수보다 매끄러움으로 결과값의 정확도를 향상 시킬 수 있음

    • ReLU함수
      • 최근 시그모이드 함수 대신 많이 사용하는 활성화 함수
      • 0을 넘으면 그 입력을 출력하고, 0 이하이면 0을 출력하는 함수

    • 선형함수 VS 비선형함수
      • 선형함수: f(x) = ax + b 수식의 구조로써 선 하나로 표현이 가능한 그래프
      • 비선형 함수: 직선 1개로 그릴 수 없는 함수
      • 퍼셉트론 이론에서의 한게처럼 한개이 직선으로 원하는 결과값을 도출하기 어려운 로직들이 많음으로 이러한 점을 비선형 함수로 극복 가능
      • 선형함수는 층을 아무리 깊이 하여도 의미가 없음
        ex) f(x) = ax 일때, f(f(x)) = a a x 이고 이는 a^2 * 로 다시 선형함수가 되기 때문

행렬의 곱


  • 행렬의 곱의 특징
    A(3*2)행렬과 B(2*4)행렬을 곱한다면 <행렬(row수 * column수)>
    1, A의 열의수B의 행의수는 같아야 한다
    2, 결과 행렬의 형태는 A의 행의수 * B의 열의수 형태로 반환이 된다.
  • 행렬의 특징을 이용하여 입력값과 W를 곱하여 입력 신호의 총 합을 구할 수 있다.
    ex)

    (w_입력노드숫자,출력노드숫자로 표현)

출력층의 설계


  • 분류
    데이터가 어느 클래스에서 속하는지 판별

  • 회귀
    입력 데이터에서 연속적인 수치를 예측

  • 데이터 변환 함수에는 항등함수와 소프트맥수 함수가 존재한다.

    • 항등함수
      입력을 그대로 출력
    • 소프트맥스 함수
      • 결과값의 총합을 1로 만들어 확률로써 어느 클래스로 구분이 될지 판단하게 해 준다.
      • 가장 큰 값을 가진 인덱스가 분류된 결과를 가리킨다(one hot 벡터 표현 방식)
        • one hot 벡터
          만약, 분류 기준이 4개 중 2번 분류 기준에 속해 있다면 [0,1,0,0]으로 표현
      • 소프트 맥스는 지수승으로 표현되기에 연산시 오버플로우가 발생 할 수 있는데 분자, 분모에 전처리를 하기전의 데이터 중 가장 큰 수를 나눠 값을 작게 해 준 다음 연산을 진행한다.
  • 출력층의 갯수는 분류하는 클래스와 동일하게 맞춰준다

추가 용어 개념


  • 순전파(forward propagation)
    뉴럴 네트워크 모델의 입력층부터 출력층까지 순서대로 변수들을 계산하고 저장
  • 정규화
    데이터를 특정 범위로 변환하는 처리
  • 전처리
    입력 데이터에 특정 변환을 가하는 행위(전처리가 정규화보다 더 큰 개념)
  • 배치
    입력 데이터를 하나로 묶은 것을 말함
    1, 메모리 효율을 고려하여 한번의 처리할 수 있는 데이터를 고려하여 처리하여 성능 향상이 가능
    2, 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리 할 수 있도록 최적화 되어있음
    3, 규모가 큰 신경망에서 데이터 전송이 병목적으로 작용 할 경우가 있는데 배치가 버스의 부하를 줄여줌(입출력 I/O를 줄이고 GPU, CPU를 최대한 활용하도록 함)

Reference

사이토 고키(齋藤 康毅), 『Deep Learning from Scratch』, 개앞맵시, 한빛미디어(2017), p63-p106
https://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D
https://firework-ham.tistory.com/61
https://leedakyeong.tistory.com/entry/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%8B%A0%EA%B2%BD%EB%A7%9D%EC%9D%B4%EB%9E%80-What-is-neural-network
https://icim.nims.re.kr/post/easyMath/64
https://reniew.github.io/12/
https://wikidocs.net/35476
https://www.crocus.co.kr/1519
https://ko.d2l.ai/chapter_deep-learning-basics/backprop.html

profile
한걸음씩 꾸준히

0개의 댓글