Sigmoid 대신 ReLU? 상황에 맞는 활성화 함수 사용하기

2021. 2. 15. 16:40·IT기술 관련/A.I 인공지능
반응형

출처:https://medium.com/@kmkgabia/ml-sigmoid-%EB%8C%80%EC%8B%A0-relu-%EC%83%81%ED%99%A9%EC%97%90-%EB%A7%9E%EB%8A%94-%ED%99%9C%EC%84%B1%ED%99%94-%ED%95%A8%EC%88%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-c65f620ad6fd

 

Sigmoid 함수는 binary classification 에 적절함 함수다. 일정 값을 기준으로 0인지 1인지구분함으로써 분류하는 방식이다. 딥러닝에서는 특정 임계치를 넘을 때만 활성화되기 때문에 activation function 중의 하나로 구분되는 함수다.

보통 처음은 input layer, 마지막은 output layer 라고 하는데, 이 가운데 보이지 않는 부분은 hidden layer로 칭한다. 실제로 9개의 hidden layer 가 있다고 했을 때 Tensorflow에 돌려 보면 정확도가 0.5밖에 안되는.. 1개 hidden layer일때 보다도 못한 결과가 나오게 된다. 왜 이런 문제가 발생할까?

  • backpropagation(1986): 2단 3단 정도의 레이어는 학습이 잘 되나, 9단, 10단으로 넘어가면서 부터는 학습이 제대로 이루어 지지 않는 이유는, 역전파 방식에 있다고 볼 수 있다. 레이어가 많을 경우 각각의 단계의 값을 미분해서 최초 레이어까지 결과 값을 전달해가게 되는데, 만약 내부의 hidden layer들이 모두 sigmoid 함수로 이루어져 있다면 각 단계에서 계산한 값은 모두 0과 1 사이의 값일 수밖에 없다.
  • Vanishing Gradient: 따라서 여러 레이어를 갖고 있을 때, 최초 입력 값은 각각의 레이어에서 나온 값들을 곱해준 만큼의 결과에 영향을 주는 것이므로 최종 미분값은 결국 0에 가까운 값이 될 수 밖에 없다. 이를 경사도(기울기)가 사라지는 현상으로 본다. 최초 입력 값이 최종 결과 값에 별로 영향을 끼치지 않는다는 결론으로 수렴하게 되는 것이다.

sigmoid 함수는 0<n<1 사이의 값만 다루므로 결국 chain rule을 이용해 계속 값을 곱해나간다고 했을 때 결과 값이 0에 수렴할 수 밖에 없다는 한계를 가지고 있으므로, 나중에는 1보다 작아지지 않게 하기 위한 대안으로 ReLU라는 함수를 적용하게 된다.

ReLU

이후 내부 hidden layer를 활성화 시키는 함수로 sigmoid를 사용하지 않고 ReLU라는 활성화 함수를 사용하게 되는데, 이 함수는 쉽게 말해 0보다 작은 값이 나온 경우 0을 반환하고, 0보다 큰 값이 나온 경우 그 값을 그대로 반환하는 함수다. 0보다 큰 값일 경우 1을 반환하는 sigmoid와 다르다. 따라서 내부 hidden layer에는 ReLU를 적용하고, 마지막 output layer에서만 sigmoid 함수를 적용하면 이전에 비해 정확도가 훨씬 올라가게 된다.

sigmoid 와 relu 외에도 여러가지 활성화 함수가 있다.

반응형
저작자표시 비영리 (새창열림)

'IT기술 관련 > A.I 인공지능' 카테고리의 다른 글

[Python NumPy] 행렬의 행과 열 바꾸기, 축 바꾸기, 전치행렬 : a.T, np.transpose(a), np.swapaxes(a,0,1)  (0) 2021.09.09
Training and Testing data sets  (0) 2021.02.15
머신 러닝 - batch size 적절하게 조절하기  (0) 2021.02.09
머신 러닝 - epoch, batch size, iteration의 의미  (0) 2021.02.09
한국어 NLP와 딥러닝을 위한 도커이미지 만들기  (0) 2020.08.06
'IT기술 관련/A.I 인공지능' 카테고리의 다른 글
  • [Python NumPy] 행렬의 행과 열 바꾸기, 축 바꾸기, 전치행렬 : a.T, np.transpose(a), np.swapaxes(a,0,1)
  • Training and Testing data sets
  • 머신 러닝 - batch size 적절하게 조절하기
  • 머신 러닝 - epoch, batch size, iteration의 의미
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    판교맛집
    AWS
    판교역
    이재곧죽습니다
    상호관세
    유니티
    수제버거
    돈까스
    무역전쟁
    쥬쥬랜드
    복리후생
    런치
    마케팅
    수제버거존맛
    점심
    판교
    맛집
    대통령
    수제버거맛집
    보안가이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
Sigmoid 대신 ReLU? 상황에 맞는 활성화 함수 사용하기
상단으로

티스토리툴바