사내 자율 교육에서 야나두 딥러닝을 진행 하였다. 중공업 계열인 우리 회사 특성 상 남자들만 있었고, 코로나 바이러스의 영향으로 방역 수칙을 준수 하면서 강의를 해야 했기 때문에, 아주 큰 강의장에 작은 인원을 두고 강의 하였다.
즉 사회적 거리두기를 하고 하였다. 역시 딥러닝 강의인 만큼 목차는 아래와 같았다.
수학필수 이론
오일러 상수 e , 앤토로피를 진행 하였다.
수학필수 이론은 경사 하강법을 하기 위한 가장 기본적인 이론 하고, Loss Function을 사용하기 위한 기본 이론 이였다. 어찌 되었든, Loss Function 자체가 기울기를 구하면서 최소값을 찾기 때문에 미분은 반드시 필요 한것이다.
통계기초
평균, 분산/표준편차, 표준 정규분포, 회귀 분석
평균은 우리가 사용하는 대표값이다. 평균은 아주 기본적인 것이고, 분산/표준편차는 평균과 개별 관측 데이터의 거리를 구하는 것으로 회귀분석을 유도 하기 전에 반드시 필요한것이다.
회귀분석은 경사 하강법을 할때, 선형 방정식을 만들어 가중치 값을 찾는가는 것이다. 결국 가중치는 조금씩 Weight를 조정하면서, 회귀 분석과 같이 선형 방정식을 찾아 간다. 그것을 이해 하려면, 회귀분석이 필요 하다. 하지만, 조금씩 조정 하는 방식으로는 적정한 가중치를 찾을 수 없게 되므로, 오차역전파 (Backpropagation)을 하게 된다.
그리고, 회귀분석의 제곱오차를 구하여, 기울기와 Y절편을 찾지만, 딥러닝에서 손실 함수를 찾을 때는 미분 하면서 접선의 기울기를 그리면서 최소값을 찾는다.
선형 회귀를 위한 뉴런
정방향 계산, 오차 역전파(Backpropagation) , 훈련을 위한 fit 구하기
학습 완료된 가중치와 절편 확인 하기
선형 회귀 뉴런 |
정방향 계산 이후에, 오차역전파를 통해 가중치와 절편을 업데이트하는 간단한 구조이다. 이것을 용어로 정리 하면 가중치 및 절편에 대한 경사하강법(gradient descent) 계산 법이다.
통계기초 분류
분류하는 뉴런
퍼셉트론(Perceptron), 아달란(Adaline), 로지스틱 손실 함수, 로지스틱 경사 하강법
퍼셉트론(Perceptron) 1957년에 발표 된것으로 이진 분류문제(True, False) 에서 최적치를 학습하는 알고리즘이다.
아달란(Adaline)은 1960에 발표 된 것으로 퍼셉트론을 개선한 적용형 선형뉴런(Adaptive Linear Neuron) 이다.
로지스틱 회귀(logistic regression)은 실제로 2진 분류법에서 많이 적용 되는 방법이다. 로지스틱 회귀 연쇄법칙 (chain rule)에 의하여 경사 하강법을 계산 한다. 경사 하강법을 진행 하면서, 로직스틱 손실함수인 Activation 함수를 미분하는 것에서 조금 버벅 되었다.
로지스틱 손실 함수는 크로스엔트로피 함수를 사용하였으며, 경사 하강법인 확률적 경사 하강법을 사용하였다. 확률적 경사 하강법은 계산 속도는 빠르나, 학습곡선이 원만 하지는 않다.
과적합 및 모델튜닝
규제(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명이 수업 듣다 말고 나갔는데, 자율교육 특성상 수강생의 이탈은 어쩔수 없는 것 같다. 수강생이 돈을 지불 하고 수강하는 것도 아니고, 중간에 이탈 한다고 해서, 불이익이 없으니, 조금 어려운 수학 문제를 하고 나면, 이탈자는 꼭 생긴다.
댓글 없음:
댓글 쓰기