딥러닝/[ 이론 ] 33

데이터 직접 생성하고 linear regression직접 구현하기

1. 설명 y=⍬x 단일 회귀분석을 수행한다 각 곱,합,평균 등의 계산을 클래스로 구현하고, forward와 back propagation함수를 각 클래스 내부에 구현한다. 2. 파일 (1) basic node.py import numpy as np class mean_node: def __init__(self): self._x=None self._z=None def forward(self, x): self._x = x self._z = np.mean(self._x) return self._z def backward(self, dz): dx = dz * 1 / len(self._x) * np.ones_like(self._x) return dx class square_node: def __init__(se..

로지스틱회귀 데이터 만들기

로지스틱회귀를 위한 범주형 데이터를 만드는 방법 import numpy as np x_dict={'mean':1, 'std':1, 'n_sample':300, 'noise_factor':0.3,'cutoff':1, 'direction':1} def dataset_generator(x_dict): x_data=np.random.normal(x_dict['mean'], x_dict['std'], x_dict['n_sample']) #np.random.normal(평균,표준편차,갯수) : 평균과 표준편차에 맞는 데이터를 갯수만큼 랜덤으로 만든다 x_data_noise=x_data+x_dict['noise_factor']*np.random.normal(0,1,x_dict['n_sample']) # 반목문 필요없..

single variable logistic regression에서 affine, activation, loss 함수의 모양 및 학습 과정

위와같은 흐름에서 각각의 함수의 모양을 확인하고 학습되는 과정을 살펴본다. 1. 함수의 모양 ( 예시는 (x,y)=(1,1) 일때 ) (1) affine fuction - 식 - 그래프 (x=1일때 함수의 그래프는 아래와 같다. z축의 의미는 z^i이다.) (2) activation function (logistic function) - 식 - 그래프 (x=1일때 함수의 그래프는 아래와 같다. z축의 의미는 y^i이다.) (3) loss function (binary cross entropy) - 식 - 그래프 (z축의 의미는 Loss) 2. loss의 의미 (1) 위치별 prediction 값 실제값이 1인데 예측값이 1에 가까우면 loss는 낮아 하고 예측값이 0에 가까우면 loss는 높아야 한다. ..

파라미터의 개선에 따른 sigmoid함수의 모양 변화

1. coefficient의 부호에 따른 모양 (1) 양수일때 양수일때는 우상 그래프가 만들어진다 a가 클수록 점점더 경사가 가팔라 진다 a가 커질수록 보라색 ->붉은색 이 된다. (2) 음수일때 음수일때는 좌상그래프가 만들어진다 a가 작을수록 (절댓값은 클수록) 가팔라진다 a가 작아질수록 (절댓값은 커질수록) 보라색->빨간색이 된다. 2. bias의 부호에 따른 모양 (1) 양수일때 bias가 양수이면 왼쪽으로 이동한다. bias가 커질수록 왼쪽으로 이동한다. 즉 bias가 커질수록 보라색 -> 빨간색으로 이동한다. (2) 음수일때 bias가 음수이면 오른쪽으로 이동한다. bias가 작아질수록 오른쪽으로 이동한다. 즉 bias가 작아질수록 보라색 -> 빨간색으로 이동한다. 3. bias만 그래프의 이동..

딥러닝을 이용한 logistic regression 전체흐름 정리

1. softmax 마지막 output layer에는 아무런 활성함수를 넣지 않기 때문에 결과값이 -무한~+무한 을 가질 수 있다. 따라서 이를 logit으로 해석할 수 있고, softmax함수를 이용하여 확률의 형태로 바꿔줄 수 있다. 2. cross entropy 확률형태로 바뀐 결과값 p_ci를 y_i와 비교하여 loss를 측정한다. 이 loss가 바로 cross entropy loss이다. 이를 이용하여 back propagation을 진행하여 파라미터를 개선한다. * 출처 : 패스트캠퍼스 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

kl divergence를 통한 cross entropy의 해석

binary entropy의 의미 및 정보이론적 해석을 다룬적이 있다. (sosoeasy.tistory.com/356) 그렇다면 더 나아가서 cross entropy가 무엇인지를 KL Divergence를 통해서 해석해 본다. 1. KL Divergence kl divergence는 정보량의 차이에 대한 기댓값이다. 즉 kl divergence를 그래프로 나타내면 아래와 같다. 2. KL Divergence를 이용한 cross entropy의 해석 kl divergence를 변형하면 cross entropy에 대한 식으로 정리된다. 그리고 이를 cross entropy에 대해서 정리하면 아래와 같아진다. 즉 cross entropy를 최소화하는것은 kl divergence를 최소화 하는것과 같은 것이다...

binary entropy의 정보이론적 해석

1. 정보량 (1) 확률과 반비례 관계 발생할 확률이 낮은 사건이 발생한다는 사실을 알때 정보의 양은 커진다. 그러니까 확률과 정보의 양은 반비례하다. (2) 숫자 예시 1~100까지 숫자중 정답인 숫자를 맞춰야 하는 문제가 있다고 가정하자. 정답이 1~10까지 중에 있다는 정보는 확률이 10/100 => 정보의 양은 10 정답이 1~20까지 중에 있다는 정보는 확률이 20/100 -=> 정보의 양은 5 . . 정답이 1~100까지 중에 있다는 정보는 확률이 100/100 => 정보의 양은 1 (3) 로그취하기 이때 동전 던지기로 정보의 양은 표현하면 동전 하나를 던졌을때 하나가 앞면이 나올 확률은 1/2 => 정보의 양은 2 동전 두개를 던졌을 때 두개가 앞면이 나올 확률은 1/2^2 => 정보의 양은..

sigmoid function(softmax function)과 logit function

0. 서론확률을 input으로 받았을 때 적절한 y값을만들어 주는 logit function에 대해서 알아보았다(sosoeasy.tistory.com/352)그렇다면 logit값을 입력으로 받았을 때 이를 확률로 바꿔주는 sigmoid(label이 3개이상일때는 softmax)에 대해서 알아본다. 1. logit의 함수는 아래와 같다 2. logit 함수로 부터 sigmoid함수를 역함수 형태로 유도할 수 있다 즉 각각의 함수의 역할은 다음과 같다 3. softmax는 여러 lable이 있을때 쓰는 활성함수. 분모가 달라진다 4. DNN에서의 흐름output layer의 결과값을 logit으로 생각하면, 이 logit을 sigmoid( softmax )함수에 적용하면 결과값으로 확률이 나온다. * 출처 ..

binary cross entropy의 의미

0. 설명 로지스틱회귀에서 사용하는 loss function인 binary cross entropy가 어떻게 만들어졌는지 살펴본다 1. loss function의 의미 loss function은 우리가 원하는값이 나오면 작은값이 나와야 하고, 우리가 원하지 않은 값이 나오면 커야 한다. 즉 결과값이 0이 나와야 하는데 1이나오면 loss는 커져야 하고, 0이 나오면 loss는 작아져야 한다. 이를 식으로 나타내면 아래와 같다. 2. log함수 그런 역할을 해주는 식이 log함수이다. 식은 아래와 같다 즉 label이 0이면 0에 가까워질수록 작아지고, 1에 가까워질수록 커지는 -log(1-x)를 loss function으로 쓰고 label이 1이면 1에가까워질수록 작아지고, 0에 가까워질수록 커지는 -l..

sigmoid, tanh의 gradient vanishing 문제

0. 서론 sigmoid와 tanh에서 왜 gradient vanishing문제가 발생하는지 알아보고, 이를 어떻게 relu를 이용해서 해결할 수 있는지 알아본다. 1. tanh와 simoid의 기울기 tanh와 sigmoid의 도함수는 위사진과 같다. 딥러닝은 back propagation 과정에서 활성함수의 기울기만큼 웨이트가 개선된다. 그런데 기울기의 최대가 tanh의 경우 x=0에서 1, sigmoid는 x=0에서 0.3정도 된다. 즉 tanh나 sigmoid를 사용하면 대부분의 경우 활성함수의 기울기가 1보다 작다. 이때 딥러닝 모델의 layer가 많다면, back propagation과정에서 1보다 작은값이 계속해서 곱해지게 된다. 이러면 기울기가 무한히 작아지는 현상이 발생하며 이 현상을 g..

logistic regression에서 loss를 binary cross entropy를 쓰는이유

로지스틱 회귀에서는 loss를 MSE를 쓰지않고 BCE(Binary Cross Entropy)를 쓴다. 그렇다면 왜 로지스틱 회구에서는 BCE loss를 쓰는지 알아본다. 1. MSE 위와같이 loss를 MSE를 사용하고 gradient descent meathod를 이용하여 최적값을 찾으려고 한다. 이때 loss function은 아래와 같다. 이때 문제는 바로 좌우측에 평평한 부분이다. 모양이 너무 평평해서 기울기를 따라 내려가야 하는데, 기울기가 거의 없어서 거의 내려가질 않는 것이다. 이를 convex하지 않다, 즉 볼록하지 않다고 한다. 이를 빨간색으로 표시하면 아래와 같다. (학습이 잘되는 부분은 초록색으로 표시) 2. BCE 이번엔 위와같이 Loss를 bce를 사용했을때를 본다. bce를 사..

딥러닝을 이용한 비선형 분류문제 해결

0. XOR게이트 문제 AND, OR, NAND게이트와는 다르게 XOR게이트는 선형식으로 구분할 수가 없다. 따라서 nand게이트(not and), or게이트, and게이트를 함께 이용하여 mlp모델을 통해 xor게이트를 만든다. 1. 구조 구조는 위와같다. 첫번째 레이어에 NAND,OR 게이트를 쌓고, 두번째 레이어에 AND게이트를 쌓는다. 그러면 xor게이트를 만들 수 있다. 2. 선형모델을 이용하여 비선형 모델 만들기 왼쪽의 선형모델 두개를 레이어로 쌓으면 오른쪽의 비선형모델을 만들 수 있다. * 출처 : 패스트캠퍼스 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

logistic regression 에서 sigmoid함수를 쓰는 이유

0. 문제 50이상이면 1, 50이하이면 0을 갖는 위와 같은 데이터가 있다. 이 데이터를 학습해서 특정 점수를 받았을 때 1을 갖는지 0을 갖는지 분류해주는 모델을 만들어 본다고 하자. 1. linear regression 선형회귀분석으로도 모델을 만들 수 있다. 예측 모형을 만들고, x값을 넣었을 때 y값이 0.5이상이면 1, 0.5이하이면 0을 가지게 한다.(decision boundary) 하지만 선형회귀분석을 통해 모델을 만들면 outliar에 취약해진다. 위 사진과 같이 outliar가 없을때(왼쪽 초록선)보다 outliar가 있을때 기울기가 급격하게 낮아지면서 잘못 분류되는 데이터가 매우 많아지게 된다. 2. logistic regression outliar의문제는 logistic regre..