[TIL] Artificial Neural Network

lena_log·2022년 2월 22일
0

Codestates Section4

목록 보기
1/12
post-thumbnail

딥러닝

  • 인공신경망의 층을 깊게 쌓은 것

    딥러닝 왜 발전?
    1.하드웨어 상향(메모리, gpu연산)
    *코렙 지피유 연산 수정할 수 있음
    2.빅데이터(데이터의 양 증가)
    3.알고리즘 향상

인공신경망

  • 실제 신경계를 모사하여 만들어진 계산 모델임
  • 줄여서 neural-net이라고 부름

퍼셉트론

  • 이간의 두뇌에 있는 신경세포를 모델링 해가지고 기계를 학습하자고 나온게 퍼셉트론

  • 이 퍼셉트론이 등장했을때 XOR(배타적 논리합)으로 문제를 삼았고 퍼셉트론의 한계를 마주하게 됨

쉽게 말하면 강에서 살고 있는 물고기가 사냥을 할때

  • 먹이가 살이 안오르고(0) 잡기 어려우면(0) 사냥을 하지 않음(0)
  • 먹이가 살이 안오르고(0) 잡기 쉬우면(1) 사냥을 함(1)
  • 먹이가 살이 오르고(1) 잡기 어려우면(0) 사냥을 함(1)
  • 먹이가 살이 오르고(1) 잡기 쉬우면(1) 사냥을 안함(0)

먹이가 살도 오르고 잡기 쉬운데 왜 사냥을 안하냐면 이것은 미끼일거라고 학습되어있어서 오히려 이런 상황에서 사냥을 안한다고함

다층 퍼셉트론

  • 위에 xor 문제를 해결하려고 나온건데 신경망에서 히든 레이어 층을 늘려서 xor을 포함해 더욱 복잡한 문제들을 해결이 가능해졌다.

위에 이미지가 보여주는 것처럼 히든 레이어가 2개 이상이 되면서 xor 문제를 해결해줌

출처: https://muzukphysics.tistory.com/entry/DL-6-%EB%8B%A4%EC%B8%B5-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-%ED%95%99%EC%8A%B5-%EB%B0%8F-%ED%95%9C%EA%B3%84-Multi-Layer-Perceptron

XOR 추가

출처: https://seongjuhong.com/2019-12-08pm-multi-layer-perceptron/

그림을 보면 맨 오른쪽이 xor인데 선을 두개 그어서 문제를 해결함
즉, 1 개의 분류기로는 문제를 풀수가 없기 때문에
And, or 등의 여러 층을 쌓아서 문제를 해결함

역전파법

  • 신경망을 인풋-히든레이어층-아웃풋까지 따라가다가 결과를 보고 난 후 다시 뒤로 가면서 가중치를 업데이트하는 역전파 법이 등장하면서 신경망 모델이 올바르게 학습될 수 있게됨

퍼셉트론 기본 구조

  1. 가중치 편향: 여러개 가중치 곱하고 더해짐
  2. 활성화 함수: 계산된 가중합을 얼마 만큼의 신호로 출력할지를 결정

활성화 함수

1. 계단함수 (step function)

출처: https://lifelectronics.tistory.com/49

그림을 보면 입력값을 넘기면 1, 넘기지 않으면 0으로 됨

임계값 부분에서 미분이 안되는 문제가 있고 임계값이 아닌 부분은 미분하면 0이되서 문제가 됨

2. 시그모이드 (sigmoid)


출처: https://reniew.github.io/12/

  • 신경망이 경사하강법으로 학습을 진행할 때 미분이 필요함
  • 주로 이진분류에서 사용

시그모이드를 중복해서 겹겹히 사용하면 기울기 소실이라는 문제가 발생함

*기울기 소실: 기울기가 작아져서 시그모이드가 없어짐

3. 렐루 (relu)


출처: https://gooopy.tistory.com/55

  • 기울기 소실 문제를 해결하기 위해 나옴
  • 양의 값일 때 1이다
  • 은닉층에서 많이 사용함

3. 소프트맥스(Soft max)


출처: https://bskyvision.com/427

  • 다중 분류 문제에 적용할 수 있게 시그모이드 함수를 일반화한 활성화 함수
  • 가중합 값을 소프트 맥스 함수에 통과 시키면 모든 클래스의 합이 1이되는 확률값으로 변환됨
    즉, 그림을 보면 분자에 있는 지수 함수가 값의 편차를 키워서(작은값은 더 작게, 큰값은 더 크게) 소프트맥스 함수를 거친 1~K값을 모두 더하면 1이됨


출처: https://m.blog.naver.com/samsjang/221030487369

입력층

  • 입력되는 데이터 셋의 특성(핏쳐 갯수 아님)에 따라 입력층 노드가 결정됨

은닉층

  • 입력층으로부터 입력된 신호가 가중치, 편향과 연산되는 층
  • 입력층에서 계산된 결과를 볼 수 없음

출력층

  • 은닉층 연산의 결과가 출력되는 층

우리가 풀어야할 문제의 종류에 따라 출력층을 잘 설게하는 것이 중요함

  1. 이진 분류: 활성화함수-시그모이드, 출력층 노드 1개
  2. 다중 분류: 활성화함수-소프트맥스, 노드 수는 레이블 클래스와 같음
  3. 회귀: 활성화 함수를 지정해주지 않고 출력층 노드수는 출력 값의 특성 수와 동일하게 설정
profile
안녕하세요. 기억보다 기록을 믿는 레나입니다!

0개의 댓글