10-1. ReLU : Better non-linearity

2022. 5. 5. 11:53·AI/머신러닝(딥러닝) 정리

우리는 이제 다른 종류의 활성화 함수를 알아볼 것이다.

우리가 알고 있는 활성화 함수는 시그모이드, 소프트맥스와 같은 함수를 이미 알고 있다.

활성화 함수가 뭔지 까먹으신 분들을 위해 다시 개념을 정의 해보면

활성화 함수는 다음으로 전달될때 영향을 주는 함수라고 생각하면된다.

예를 들어 시그모이드의 경우 0~1 사이의 값을 전달해주는 함수처럼 이런 것을 활성화 함수라고 한다.

 

우리가 새로운 활성화 함수를 다시 배우는 이유가 있다.

딥러닝에서 다시 무엇인가를 찾는 이유는 대부분 성능이 안나와서이다.

우리는 딥러닝의 신경망이 깊고~ 넓어질수록 성능이 향상 됨을 알게되었다.

당연히 사람들은 신경망을 더우더욱 깊고 넓어지게 만들었지만 어느 시점이 되면 성능이 저하 되는 것을 알게 되었다.

 

Backpropagation을 하게 되면서 기울기 미분 값을 전달하게 되는데 그 값이 점점 희미해지는 현상이 발생하게 되었다. 

우리는 이러한 것을 gradient vanish라고 부르게 되었다. 말 그대로 기울기가 소실 사라진다는 것이다.

예를 들어 설명을 해본다면 우리는 중간 중간에 있는 시그모이드라는 활성화 함수를 거치게 되면서 무조건 그 출력값은 0~1 사이의 값을 가지게 된다. 0~1 사이의 값이 출력 되는데 이게 처음에는 0.01이었다면 점점 0.0001이렇게 값이 0에 가까워 지게 되며 곱해진다. chain rule 때문이다.

따라서 힌튼 교수님은 우리 활성화 함수가 비선형이라 그런거 같아 다른걸로 적용하면 될거 같다는 의심을 하게 되었고 

나온 함수가 relu 함수이다. x축의 값이 0이하라면 0의 값을 출력 해주고 나머지는 x 값을 따라서 출력 해주는 그래프이다.

 

이러한 relu는 1보다 출력값을 출력하는 문제를 해결할 수 있었다.

최근에는 다양한 활성화 함수가 나오게 되었고 시그모이드는 마지막 층을 제외하고 중간에 있는 활성화 함수로는 안사용한다고 한다.

 

그리고 가장 최근에는 swish

라는 함수가 나오게 되면서 0이하의 값에서도 의미 있는 값을 출력 할 수 있게 해준다고 한다.

relu 땡큐!

반응형

'AI > 머신러닝(딥러닝) 정리' 카테고리의 다른 글

10-3. NN dropout and model ensemble  (0) 2022.05.05
10-2. Initialize weights in a smart way  (0) 2022.05.05
9-2. Backpropagation  (0) 2022.05.04
9-1. Neural Nets(NN) for XOR  (0) 2022.05.04
8-2. Deep Neural Nets  (0) 2022.05.04
'AI/머신러닝(딥러닝) 정리' 카테고리의 다른 글
  • 10-3. NN dropout and model ensemble
  • 10-2. Initialize weights in a smart way
  • 9-2. Backpropagation
  • 9-1. Neural Nets(NN) for XOR
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩
    DFS
    에라토슽네스의 체
    코딩테스트
    인접리스트
    코딩문제
    프로그래머스
    왜곡보정
    코딩기초
    BFS
    스택
    소수찾기
    if문
    C언어 기초
    자료구조
    큐
    코딩기초스킬
    순차 탐색
    선택정렬
    알고리즘
    캘리브레이션
    n진법 변환
    인접행렬
    그리디
    삽입 정렬
    다이나믹 프로그래밍
    백준
    c언어
    정렬
    이미지처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
10-1. ReLU : Better non-linearity
상단으로

티스토리툴바