-
[DL for VS #1] 활성화 함수 : sigmoid, softmax, tanh, ReLU, Leaky ReLUMachine 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는 가중치 벡터, B는 y 절편
* 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
'Machine Learning > Deep Learning for Vision Systems' 카테고리의 다른 글
[DL for VS #6] 성능 지표 - 정확도, 혼동 행렬, 정밀도, 재현율, F-점수, 시각화 예제 (0) 2023.04.12 [DL for VS #5] 컬러 이미지 합성곱 연산 실습 (0) 2023.04.12 [DL for VS #4] CONV kernel, stride, padding, pooling, dropout (0) 2023.04.12 [DL for VS #3] 최적화 알고리즘-(배치, 확률적, 미니배치)경사하강법, 역전파 알고리즘 (1) 2023.04.08 [DL for VS #2] 순방향 계산 과정, 오차함수-평균제곱오차(MSE), 교차엔트로피, 오차와 가중치 관계(최적화 문제) (0) 2023.04.07