분류에 관련된 통계를 시작한다, 항상 분류에 대한 통계를 들어 갈 때는 강좌를 하는 사람이나 받는 사람 모두 부담이 된다. 최근에 딥러닝이, 그나마 성숙하고 성장하게 된 계기는 분류에 대한 부분이 최근에 발달이 잘 되어서 이다. 조금 어렵지만, 강의 자료인 만큼 쉽게 풀어서 쓸 것이다.
선형 회귀를 위한 뉴런
선형회귀를 위한 뉴런은 앞서 이야기 한 부분을 클래스 만들어 정리 하는 것이다. 초기에 알고리즘을 만들고 나면 클래스 형태로 정리 해야만, 나중에 큰 프로젝트 할때 유리 하다.
선형 회귀는 정방향 계산에서 부터 시작 이 된다.
$ y = w * x +b $
파이썬에서 함수를 사용할때 def를 써야 하는데, def__init__(self)는 변수 초기화 할때 사용한다. 그리고 나머지는 사용자 함수로서 사용한다.
1) 정방향 (forpass) 계산
class만들 때는 self가 반드시 들어 간다 self는 현재의 인스턴스 객체를 가르키는 기능으로 쉽게 풀어 이야기 하면 self의 사전적 의미는 그대로 자기 자신을 이야기 한다. self라는 지시어는 이름공간(namespace)와 관련 있다. 주의점은 클래스 내에서 함수가 정의 될때, 첫번째 매개변수는 self 이어야 한다.
2) 역방향(backpropagation) 계산
선형회귀에 대한 손실함수는 앞에서 증명 하였다. 손실함수의 증명된 결과는 아래와 같다.
$ { \partial SL \over \partial w } = -(y - \hat{y})x $
$ { \partial SL \over \partial b } = -(y - \hat{y}) $
w_grade = x * err
b_grade = 1 * err
위 그림은 가중치 및 절편에 대한 경사하강법(gradient descent) 계산 하는 것이다. 위에 있는 가중치와 절편의 손실값을 계산 하여, 새로운 가중치와 절편을 만드는 것이다. 이렇게 계속 계산 하다 보면, 손실값이 가장 적은 시점이 오게 되는데, 그때가 우리가 이야기하는 최적화 된 값이 나오게 된다.
3) 훈련을 위한 fit 구하기
for i in range(epochs):
for x_i, y_i in zip(x, y):
y_hat = self.forpass(x_i)
err = -(y_i – y_hat)
w_grad, b_grad = self.backporp(x_i, err)
self.w -= w_grade
self.b -= b_grade
Neuron 이라는 클래스에 초기화 함수 정방향 함수, 역방향 함수, 모델 fitting화 하는 함수인 fit 함수가 있다. 이를 실행 하는 방법은 아주 간단하다.
첫번째 클래스 객체를 활성화 시킨다.
neuron = Neuron()
두번째 객체 에서 x와 y값을 넣고 활성화 한다.
neuron.fit(x, y)
세번째 가중치와 절편을 본다.
print(neuron. w, neron.b)
4) 학습 완료된 가중치와 절편 확인 하기
neuron.w(가중치), neuron.b(절편)
plt1 = (-0.1, -0.1 * neuron.w + neuron.b)
plt2 = (0.15, 0.15 * neuron.w + neuron.b
plt.plot([pt1[0], pt2[0]], [pt1[1], pt2[1]])
plt.xlabel(‘x’)
plt.ylablel(‘y’)
plt.show()
경사 하강법을 적용 하여, 회귀 분석 알고리즘을 완성 하였다. 자세한 소스코드는 아래를 클릭 하면 된다.
※ 참고서적 : 정직하게 코딩하며 배우는 딥러닝 입문 (이지스퍼블리싱)
경사 하강법(gradient descent) 으로 학습 하는 방법 야나두 딥러닝
선형 회귀의 목표는 입력 데이터 (x)와 타깃 데이터 (y)를 통해 기울기가 절편을 찾는 것이었다. 즉 최소 제곱법에 의해 관측치와 평균치의 차이를 비교해서 기울기와 절편을 찾았다.
경사하강법(gradient descent) 바로 그 방법 중에 하나이다. 경사 하강법은 모델이 데이터를 잘 표현 할수 있도록 기울기 (변화율)을 사용하여 조금씩 조정하는 최적화 알고리즘 이다. 경사 하강법은 모델이 데이터를 잘 표현 할 수 있도록 기울기(변화율을) 사용하여 조금씩 조정 하는 최적화 알고리즘 이다.
1. 데이터 셋 설명
통계 기초 1 [평균, 분산, 표준편차, 정규분포, 회귀분석]
딥러닝에서 왜 통계를 다루는 이유는 딥러닝을 배우려면 초기 모델부터 가야 하는데, 초기 모델은 대부분 통계에서 시작 되기 때문이다. 초기의 뉴런은 회귀 방정식에서 나온 직선 가지고 검증을 하였기 때문이다. 통계 기초는 다른 깊은 부분을 이야기 하기 보다는 회귀 분석 까지 가기 까지의 과정만 이야기 할 예정 이다.
회귀분석까지 가려면, 아래의 그림과 같다. 그리고, 통계 기초에 대해서는 이 한 개의 포스트로 정리 한다.
1. 평균
엔트로피 𝑒𝑛𝑡𝑟𝑜𝑝𝑦 대한 이해 딥러닝 기초
딥러닝 손실 함수 사용할때, 약방의 감초처럼 나오는 엔트로피 함수, 이것을 모르면, 일단 딥러닝을 모른 다 할 정도로 엔트로피 함수는 중요 하다. 딥러닝에서는 손실값을 구할때 사용하는 것으로, 사실상 손실 값을 계산 하지 않으면, 실제로 모델을 실행 시키고 나서 모델의 결과 값을 알수 가 없다. 모형에 대한 평가는 엔트로피 함수 기반으로 한다.
이것의 기원은 볼츠만의 엔트로피로 부터 나온다.
공식은 S = K log W 이다.
불츠만이라는 분은 살아서는 인정을 받지 못하였는데, 죽어서 인정을 받으셨던 분이다. 이것이 있어서 오늘날 통계학이나 인공지능이 많이 발전 했다.
1. 불츠만의 앤트로피
딥러닝 하면서 필요한 것 및 수학 필수 이론
딥러닝을 그냥 시작 하면 매우 어려울 수도 있다. 왜냐 하면, 선형대수학이나, 통계학에 대한 기초 이론이 있어야 어느 정도 가능 하다. 이번에 하는 시간은 매우 적지만, 기초에 대한 부분을 우선 적으로 다룰 예정이다.
1. 딥러닝에 필요한 것들
야나두 딥러닝 [ 많이 사용되어 지는 통계 및 인공지능]
모형에 많이 사용 되어 지는 통계 및 인공지능은 아래와 같다. 선형 예측 보다는 Classifier 들이 더 많이 존재 한다. 실무에서는 Classifier가 거의 없다. 거의 대부분은 변화 하는 수가 아니라, 정의 되어 있는 수 (즉 Information 정보) 데이터 이다.
종속 변수에 영향을 주는 독립 변수가 대부분 1개 ~2개 정도 되기 때문에 Classifier를 사용하기가 어렵다. 변수들의 구성을 보았을때, 정보성 변수등 등급이 있는 경우가 있다. 회사내에서는 직급, 근속년수, 근무지역 별로 나누어 지는데, 어떤 것을 분석 하느냐에 따라서, 전부 달라 진다.
위의 PPT 자료는 선형 회귀 빼고는 모두 Classifier를 사용한 모형이다. 하지만, Random forest 랜덤 포레스트는 Classifier 말고 회귀 분석을 하는 경우가 있다.
Linear Regression : 종속변수 y와 한 개 이상의 독립변수 X와의 선형상관관계 모델링
Logistic Regression : 독립변수의 선형 결합을 이용하여 사건의 발생 가능성 예측
종속변수가 범주형 데이터를 대상으로 하여 분류문제로 봄
css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소
앞에서는 html의 간단한 sheet를 소개 하였습니다. html은 주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다. 아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다. body 부분의 css 코딩 ...
-
KoLNP 로딩하면 아래와 같은 메시지가 나올 경우가 있다. warning message: in i.p(...) : 패키지 ‘c:/users/rdmkyg/appdata/local/temp/rtmps6vlku/file23e45dd83537/konlp...
-
CNN 하면서 이미지 데이터 전처리는 아주 중요한 것이다. 본인이 수집하거나 관찰 한 사진이 많고, 데이터 라벨 작업을 하였다면, 아래와 같은 딥러닝 할 수 있는 데이터 셋을 만들어야 한다. 즉 feature (image) 값과 l...
-
RTX 3080 GPU가 들어 있는 그래픽 카드를 구입한다고 해서, 모든 것이 완벽하게 되는 것이 아니다. 윈도우 환경에서는 딥러닝을 잘 안돌리니까? Ubuntu 환경에서 돌려야 한다. 앞으로 이야기하는 설정은 아래의 서적에 최적화 되었...
-
일반적으로 매우 회귀하여 일어날 확률이 아주 작은 경우에 포아송(Poisson) 분포를 사용한다. 예를 들어 고속도로 상에서 하루동안 발생하는 교통사고에 의한 사망자수, 어느 집에 한 시간 동안 걸려 오는 전화 통화수, 1주일간 어떤 동사무소에 접수되...
-
R 하고 Python을 같이 사용하게 되면, 두개의 문법이 매우 헤깔리다. 헤깔린 부분을 해결하려면, 나름대로 기록이 필요하다. R에서는 paste 또는 paste0로 하지만, Python은 문자열 + 문자열로 한다. 문자열을 그대...
-
네이버 지식인에서 아래와 같은 질문이 왔다. 미국 연방기금금리 1%p 인상이 미국의 실업률과 인플레이션율에 미치는 동태적 영향을 VAR 모형과 직교화충격반응함수를 이용해 분석하시오 .라는 과제를 받았습니다.. rstudio의 VAR함...
-
현업에 있으면, 직면하는 데이터는 항상 범주형(카테고리) 데이터 셋이다. 다른 모델로 하였을 경우 범주형 데이터는 항상 원-핫 인코딩을 하여 계산 하여야 만 했다. 하지만, 원-핫 인코딩을 하지 않고, 범주형 데이터를 이용하는 것에 대...
-
통계학에서 베이블 분포(Weibull distribution)는 연속확률 분포로써 고장 확률에 대한 예측에 대하여 많이 쓰인다. 신뢰도를 측정하는데 많이 쓰이는데, 시스템 혹은 부품이 작동을 시작하여 그 시점까지 고장 나지 않고 여전히...
-
Windows 버전에서는 패키지 설치가 아주 쉽지만, Ubuntu 버전은 패키지 설치가 매우 어렵다. Linux 특성 상 의존성 에러가 나기 때문이다. 그래서 여러가지 방법으로 패키지를 설치 하는 방법을 설명 하고자 한다. 어찌 되...
-
보안이 매우 중요한 회사에서는 웹사이트가 접속이 제한이 된다. 그래서, R CRAN Mirror 사이트를 선택해서 설치 해야 한다. 앞으로의 보안 정책은 전부다 막고, 일부만 풀어 주는 방식으로 될 것이며, 물론 보안 신청 한...