ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DL for VS #1] 활성화 함수 : sigmoid, softmax, tanh, ReLU, Leaky ReLU
    Machine Learning/Deep Learning for Vision Systems 2023. 4. 7. 20:59

     컴퓨터 비전을 독학하고자 책을 찾던 중 괜찮은 책을 발견했다. 

    목차를 보면 많은 내용을 꽤나 자세하게 다루는 것을 알 수 있다.

    내용을 자세한 수학 수식과 함께 그림으로 설명하고 있어서 컴퓨터 CV(computer vision)를 처음 접하는 비전공자(me)에게 적합한 것 같다. 해당 책은 케라스(keras) 라이브러리를 이용하여 딥러닝을 구현한다.

     


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

    * Deep Learning(딥러닝)

    * CNN(Convolutional Neural Network, 합성곱 신경망) : 이미지 처리 및 분류에서 활용

    * DNN(Deep Neural Network, 심층 신경망) : 은닉층이 2개 이상인 신경망

    * RNN(Recurrent Neural Network, 순환신경망) : 반복 순차적 데이터에 특화된 순환구조의 시간종속 신경망,

    * GAN(Generative Adversarial Network, 생성적 적대 신경망) : 2014년 이안 굿펠로가 고안한 딥러닝모델, CNN을 발전시킨 모델.

    StackGAN : 텍스트로 된 설명과 부합하는 고해상도 이미지를 만들어내는 GAN의 변종.

     

    * 컴퓨터비전파이프라인(Computer Vision Pipeline) :

    데이터 입력 : 이미지, 동영상(각 프레임은 이미지)

    전처리 : 데이터 준비 작업, 이미지 표준화, 색 변환, 그 외...

    특징 추출 : 이미지를 구별할 수 있는 정보 찾기

    머신러닝 모델 : 추출된 특징을 학습하고, 대상을 예측하거나 분류하기.

     

     

    * p.68 파이썬 가중합

    z = np.dot(w.T, X) + b

    X는 입력 벡터, w는 가중치 벡터, By 절편

     

    * p.69 스텝 활성화 함수(파이썬)

    def step_function(z): // z는 가중합

    if z<= 0:

    return 0

    else:

    return 1


    2.2 다층퍼셉트론 : 퍼셉트론이 여러개.

    2.2.1 다층 퍼셉트론 구조 : (나중에 계속 나옴. 설명 생략)

    2.2.2 은닉층이란

    2.2.3 층수와 층을 이루는 노드 수

    *전결합신경망이 가장 기본적인 신경망 구조.

     

    2.3 활성화 함수 : 비선형성을 도입할 수 있음

    2.3.1 선형 전달 함수(linear transfer function = 항등함수 identity function) : 입력 그대로 출력. 활성화 함수 없는 효과

    2.3.2 헤비사이드 스텝 함수(이진 분류) ->스텝함수. 0,1 출력

    2.3.3 시그모이드(S-형 커브, S-shape curve)/로지스틱 함수 :

    확률을 구함.

    # 파이썬 시그모이드 함수 구현
    improt numpy as np			# 넘파이 임포트
    
    def sigmid(x):
    	return 1 / (1 + np.exp(-x))  # 시그모이드 함수 정의

    2.3.4 소프트맥스 함수 :

    시그모이드 함수의 일반형. 3개 이상의 클래스를 대상으로 한 분류에서 각 클래스의 확률을 구할 때 사용.

    2.3.5 tanh 함수(하이퍼볼릭 탄젠트 함수) :

    -1 ~1 사이의 값 출력. 시그모이드 함수에 비해 은닉층에서 더 좋은 성능. 시그모이드는 데이터 평균이 0.5에 모이는데 tanh 함수는 0에 가까워지므로 데이터를 중앙에 모으는 효과 있어서 다음 층의 학습에 유리하기 때문.

    시그모이드함수와 tanh 함수는 z값이 매우 크거나 작을 때 함수의 기울기가 매우 작아지는 단점이 있음.(기울기 소실 문제)

    ->ReLU 활성화 함수로 해결.

     

    2.3.6 ReLU 함수(정류 선형 유닛,Rectified Linear Unit, ReLU) :

    입력이 0보다 크면 노드 발화, 입력이 0보다 작으면 발화x 하지만 0보다 큰 입력에 대해서는 출력값이 입력값에 비례해서 커진다. ReLU 함수는 다음과 같이 정의. (한글로는 랠루)

    현재 최고 성능의 활성화 함수로 평가받고 있음. 다양한 상황에 잘 작동, 은닉층에서 높은 성능 보임.

    # 파이썬 ReLU 함수 구현
    def relu(x):
    	if x < 0:
    		return 0
    	else:
    return x

     

    2.3.7 누설 ReLU 함수(Leaky ReLU function) :

    ReLU x가 음수일 때 기울기가 0인 단점을 해결

    x<0인 구간에서 함숫값이 0이 되지 않도록 누설 ReLU 함수는 작은 기울기(0.01)로 함숫값을 음수로 만듦.

    #파이썬 Leaky ReLU 함수 구현
    def leaky_relu(x):
    	if x < 0:
    		return x * 0.01
    	else:
    return x

    댓글

Designed by Tistory.