전체 글(175)
-
22.03.30 딥러닝 학습과정6 - 기울기 소실(Gradient Vanishing) / 폭주(Exploding)
기울기 소실 Gradient Vanishing : 레이어가 많은 깊은 인공신경망을 학습하다보면 역전파 과정에서 입력층으로 갈 수록 미분값 = 기울기(Gradient)가 점점 작아지는 현상 - 입력층에 가까운 층들에게 weight update가 제대로 이루어지지 않으면 최적의 모델(global loss minimum인 weight 찾기)에 실패할 수 있다. 기울기 폭주 Gradient Exploding : 미분값 = 기울기가 점차 커지더니 가중치들이 비정상적으로 큰 값이 되면서 결국 발산해버리는 것. RNN에서 쉽게 발생한다. 1. ReLU와 ReLU의 변형 시그모이드 함수를 사용하면 입력에 따라 출력값이 0 또는 1에 수렴하면서 기울기가 0에 가까워진다. 따라서 역전파 과정에서 입력층 방향으로 갈 수록 ..
2022.03.30 -
22.03.24 딥러닝 학습과정5 - 과적합(Overfitting)을 막는 방법들
training dataset에만 모델이 과적합되는 현상은 모델의 성능을 떨어트리는 주요 이슈이다. train data에 대한 정확도는 높을지라도, 실제 데이터(처음보는 데이터- val data, test data)에 대해서는 정확도가 떨어질 수 있다. 이는 모델이 training data를 불필요할정도로 과하게 암기하여 training data에 포함된 노이즈까지 학습한 상태라고 해석할 수 있다. 그럼 지금부터 딥러닝(DNN)의 Overfitting을 막는 방법에 대해 알아보자. 1. 데이터 양 늘리기 - 데이터 양이 적을 경우, 모델은 해당 데이터의 특정 패턴이나 노이즈까지 쉽게 암기하게 되므로 과적합 현상이 발생할 확률이 늘어난다. 그러므로 데이터 양 ↑ 이면 데이터의 일반적인 패턴을 잘 파악함(H..
2022.03.30 -
22.03.21 딥러닝 학습과정4 - 과적합 Overfitting / 과소적합 Underfitting
과적합(Overfitting) : training dataset만 과하게 학습한 상태. epoch가 지나치게 많으면 발생할 수 있다. training data에 대해서는 오차가 낮지만, test data에 대해서는 오차가 높다. 과적합이 생기지 않고 loss가 제일 낮은 최적의 epoch를 찾아야 한다. test data의 오차가 증가하기 전이나, 정확도가 감소하기 전에 훈련을 멈추는 것이 좋다. 과소적합(Underfitting) : test data의 성능이 올라갈 여지가 있음에도 훈련을 덜 한 상태. epoch가 너무 적으면 발생할 수 있다. test data에 대한 정확도도 낮고, train data에 대한 정확도도 낮다. + 여기서 fitting이라는 표현을 쓰는 이유는, 머신러닝에서 learni..
2022.03.24 -
22.03.24 딥러닝 학습과정3 - Epochs / Batch Size / Iteration
AI의 학습 : 데이터의 input에 대한 실제정답과 pred(예측값)의 오차(loss)로부터 optimizer(최적화방법 = Gradient Descent) 을 통해서 가중치(w, Hypothesis에 있는 w) 를 업데이트하는 것. 사람의 학습 : 문제지의 문제에 대한 실제정답과 학생의정답의 오차로부터 채점하면서 부족한 것 업데이트. Epoch : 전체데이터에 대해서 순전파(Forward propagation)과 역전파(Backpropagation)이 끝난 상태. 전체 데이터에 대한 학습을 한 번 끝낸 상태 epoch 수가 너무 많으면 overfitting이, 너무 적으면 underfitting이 발생할 수 있다. (ex. 50 epoch = 전체 데이터(한 문제지 전체)를 50번 학습한다.) Bat..
2022.03.24 -
22.03.22 딥러닝 학습과정2 - Forward propagation / Backpropagation
Forward propagation : pred - 실제정답을 계산 Back propagation : Gradient Descent를 사용하여 가중치를 업데이트 이런 모양의 NN이 있다고 치자. 여기서 b는 고려하지 않고 w만 있다고 생각한다. x: 입력층 h: hiddent layer z: 이전 층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합(sigmoid 처리 전) = 활성화함수의 입력 (z를 |모양(=활성화함수)를 거쳐 나오는 변수 h 또는 o가 z가 sigmoid(활성화함수)를 가치고 난 뒤의 값 = 각 뉴런의 출력값이다.) o(또는 h): 뉴런의 출력값. o는 그냥 맨 마지막 layer의 출력값을 특별히 저렇게 쓴듯 Forward Propagation(순전파) : 입력층 ->..
2022.03.24 -
22.03.13 [kfood프로젝트] AI파트 최종 정리 ( 일정, 기능 구현, 어려웠던 점, 배운 점, 앞으로의 계획 )
드디어 우리 nochilsu 팀의 kfood 프로젝트가 마무리가 되었다. 최종 발표 전에 정한 프로젝트 명은 'HelloKfood'로 결정되었고, 로고도 다음과 같이 수현님께서 제작해주셨다. 일정 일단 우리 AI 파트에서 진행한 일정은 다음과 같다. 22.02.15 ~ 22.03.10 나머지 03.12 까지는 백엔드,프론트엔드 분들께서 배포 및 서비스 오류 수정 마무리 단계를 진행해주셨다. 기능 구현 우리 AI파트가 해야할 것은 다음 3가지이다. 1. 데이터셋 구성 2. 음식탐지 모델 training 및 tuning 3. 음식선호도에 따른 음식 추천 1. 데이터셋 구성 우리가 이번에 사용한 데이터셋은 모두 2개로, 한국인들이 즐겨먹는 음식에 대한 image와 bounding box에 대한 정보가 들어있는..
2022.03.24