야나두 딥러닝 교육 후기 정리

   사내 자율 교육에서 야나두 딥러닝을 진행 하였다.   중공업 계열인 우리 회사 특성 상 남자들만 있었고,   코로나 바이러스의 영향으로 방역 수칙을 준수 하면서 강의를 해야 했기 때문에,  아주 큰 강의장에  작은 인원을 두고 강의 하였다.  




  즉 사회적 거리두기를 하고 하였다.   역시 딥러닝 강의인 만큼  목차는 아래와 같았다. 

   수학필수 이론 

           로그 log,  미분 (일반미분,  편미분,  다변수 함수의 전미분,  합성 함수의 미분
          오일러 상수 e ,  앤토로피를 진행 하였다.  


   수학필수 이론은 경사 하강법을 하기 위한 가장 기본적인 이론 하고,  Loss Function을 사용하기 위한 기본 이론 이였다.     어찌 되었든,  Loss Function 자체가  기울기를 구하면서 최소값을 찾기 때문에 미분은 반드시 필요 한것이다. 


  통계기초

         평균,  분산/표준편차, 표준 정규분포,  회귀 분석 


   평균은  우리가 사용하는 대표값이다.   평균은 아주 기본적인 것이고,   분산/표준편차는 평균과  개별 관측 데이터의 거리를 구하는 것으로  회귀분석을 유도 하기 전에 반드시 필요한것이다. 

  회귀분석은  경사 하강법을 할때,  선형 방정식을 만들어 가중치 값을 찾는가는 것이다.  결국  가중치는 조금씩  Weight를 조정하면서,  회귀 분석과 같이 선형 방정식을 찾아 간다.  그것을 이해 하려면,   회귀분석이 필요 하다.    하지만,  조금씩 조정 하는 방식으로는 적정한 가중치를 찾을 수 없게 되므로,  오차역전파 (Backpropagation)을 하게 된다. 

  그리고,  회귀분석의 제곱오차를 구하여,  기울기와 Y절편을 찾지만,  딥러닝에서 손실 함수를 찾을 때는 미분 하면서 접선의 기울기를 그리면서 최소값을 찾는다.  

선형 회귀를 위한 뉴런

     정방향 계산,  오차 역전파(Backpropagation) , 훈련을 위한 fit 구하기 


   학습 완료된 가중치와 절편 확인 하기 

선형 회귀 뉴런


정방향 계산 이후에,  오차역전파를 통해  가중치와 절편을 업데이트하는 간단한 구조이다.  이것을 용어로 정리 하면 가중치 및 절편에 대한 경사하강법(gradient descent) 계산 법이다. 


통계기초 분류

  최대 우도법,  오즈비,  로짓함수,  로지스틱 함수,  크로스 엔트로피


최대 우도법은  분포상의 최대값을 찾는 것인데,   결국 대표값으로 결론이 난다.   이 부분은 분포를 알아야 머신러닝을 정확 하게 할 수 있기 떼문에 한것이다. 

오즈비, 로짓함수, 로지스틱 함수는  성공확률의 비를 가지고 오즈비를 계산 하고,  이를 log를 씌운 다음, 로짓함수를 구하고,  로지스틱 함수는 자연로그를 Z를 넣고 방정식을 유도 한것이다.   

즉 로직스틱 함수가 분류의 첫번째  모델이다.   주로 이진 분류 할때 쓰인다. 
로지스틱 함수

즉 확률이 0.5 이상인 경우 1이고  이하인 경우 0으로 분류하는 것이다.    
나중에 딥러닝에서 Activation 함수를 구할 때 이용된다 


코로스 엔트로피는 불확성에 대한 척도이다.  결국 예측 모형을 하고자 하는 것은 불확실성을 제어하고자 하는 경우이다. 


크로스 엔트로피

위 공식을 보면 경우의 수 만큼 범주의 개수를 구하며,  예측 분포를 구한다.   그런데,  실제 분포가 예축 분포보다 값이 크면,   값이 높아지는 식으로 되어 있다.   

결국 이것은 분류의 Loss 값을 구하는 것인데,   실제 분포와 예측 분포가 거의 같아지면,  0으로 수렴 하기 때문에,  작은 값이 좋다. 



분류하는 뉴런

 퍼셉트론(Perceptron), 아달란(Adaline),  로지스틱 손실 함수, 로지스틱 경사 하강법


퍼셉트론(Perceptron) 1957년에 발표 된것으로  이진 분류문제(True, False) 에서 최적치를 학습하는 알고리즘이다.   

아달란(Adaline)은 1960에 발표 된 것으로 퍼셉트론을 개선한 적용형 선형뉴런(Adaptive Linear Neuron) 이다. 

로지스틱 회귀(logistic regression)은 실제로 2진 분류법에서 많이 적용 되는 방법이다.  로지스틱 회귀 연쇄법칙 (chain rule)에 의하여 경사 하강법을 계산 한다.    경사 하강법을 진행 하면서,  로직스틱 손실함수인 Activation 함수를 미분하는 것에서 조금 버벅 되었다.  

로지스틱 손실 함수는 크로스엔트로피 함수를 사용하였으며,  경사 하강법인 확률적 경사 하강법을 사용하였다.   확률적 경사 하강법은 계산 속도는 빠르나, 학습곡선이 원만 하지는 않다. 


과적합 및 모델튜닝

  검증 세트 분할(generalization),  데이터 Scale(standardiztion), 과대적합, 과소적합,
규제(regularization), 교차 검증


 검증 세트 분할은 데이터를 학습 할때,   훈련셋, 검증셋, 테스트 셋을  적정한 비용로 나누어야 한다.    즉 훈련셋 60%,  검증셋 20%, 테스트셋 20%로 데이터 셋을 적정한 비율로 나누어 훈련셋과 검증셋을 가지고 학습 곡선을 그려야 한다. 

데이터 Scale(standardization)은  데이터의 크기를 맞추기 위해 0~1까지 데이터를 맞추어 주는 역할을 한다  아래 그림과 같이 데이터 크기의 차이가 크면 데이터 Scale은 반드시 해주어야 한다 .

데이터 Scale


과대적합(Overfitting)은 실무를 하면서,   사람들이 오류를 낼 가능 성이 가장 높은 것이다.  모델을 만들때,   누구든지,  적은 Loss값과  높은 정확도를 그려 내야 하려고 하기 때문이다. 

모델을 만들고 나서,   학습곡선을 그려야 하는데,  학습곡선을 관찰 하면서,   훈련세트의 정혹도는 높은데,  검증세트의 정확도가 낮으면 Overfitting이 발생이 된다. 

 이러한 문제를 해결을 하려면,   에포크를 적정선에서 정지하는 early stopping,  학습파라메터는 제거하는 (Dropout), 가중치 규제(reguliarization), 모델을 단순화  즉 모델의 Layer를 줄여야 한다.

  교차 검증(cross validation)은 전체의 데이터의 세트의 샘플 개수가 적을 때 하는 방법으로 아래 그림과 같이 K폴드를 만든 다음에 아래 그림과 같이 차례대로 훈련세트와 검증 세트를 훈련 하는 방법이다.    데이터가 70~300개 사이이면,  데이터의 갯수가 적어서,  제대로 된 훈련을 할 수 없다  아래와 같이 여러개의 폴드를 나누어 교차 검증을 수행 하여야 한다. 


교차 검증


결론

위의 내용을  16시간 동안 강의 하였다.  준비는 보다 많은 것을 가지고 하였지만,  실제로 한강의는 앞에 정도 였다.    그런데,  교육 수강자들이 개발하는 개발자가 아니고, 생산, 설계, 연구소인원으로 구성되어 있어,  실제로 구현 하는 것이 아니라, 나중에 과제나, 공사가 생기면,  업체에서 가져온 보고자료를 검토 하는 하는 업무를 주로 할 것이다 

 기초적인 원리만 알아도 충분히,  업무에 적용 할 수 있을 거라 판단 되어,  코딩 보다는 원리 교육에 집중 하였다. 

  중간에 버벅되기도 하였고,   수강생 4명이 수업 듣다 말고 나갔는데,  자율교육 특성상 수강생의 이탈은 어쩔수 없는 것 같다.   수강생이 돈을 지불 하고 수강하는 것도 아니고,  중간에 이탈 한다고 해서, 불이익이 없으니,  조금 어려운 수학 문제를 하고 나면,  이탈자는 꼭 생긴다. 






댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...