Hayden's Archive
[AI/딥러닝] 딥러닝 도입( Segmentation / Computer Vision / Edge Detection / CNN / Classification / Cross-Validation ) 본문
[AI/딥러닝] 딥러닝 도입( Segmentation / Computer Vision / Edge Detection / CNN / Classification / Cross-Validation )
_hayden 2020. 7. 27. 15:472020 유망 인공지능 스타트업 100
2017년에는 한국 회사로 Lunit이 유일하게 100위 안에 든 적이 있다 ( http://www.techforkorea.com/2017/01/18/lunit-about-to-run-it-in-2017-the-only-korean-company-in-the-ai100-by-cb-insights/ )
참고 : https://news.unist.ac.kr/kor/column_202/
Stochastic gradient descent
-> 미분. 경사하강법. 고도가 0인 지점. 3차원으로 나타낸 것.
-> 경사하강법이 어려운 이유는 차원이 10차원, 100차원 이렇게 될 수 있음.
Segmentation - 모든 픽셀들을 카테고리로 분류하는 것
여러 개의 픽셀 집합으로 분류. 카테고리를 단순화 시키는 데 탁월한 효과
=> 자율 주행에서 인도, 차도, 사람 이렇게 구분 가능
출처 : https://divamgupta.com/image-segmentation/2019/06/06/deep-learning-semantic-segmentation-keras.html
Computer Vision
Computer Vision
=> 컴퓨터 기계의 시각으로 어떤 정보를 받아들여서 Classification(분류)한다. 최신 분야. 딥러닝 알고리즘이 들어감. 그 분류는 인간의 시각을 본떠서 만들어짐.
Psycology(심리학) -> 마음을 정형화해서 데이터를 뽑아내서 기계에게 마음을 심는 것... 컴퓨터 비전적인 측면에서 연관이 되어있음.
Computer Vision에 어느 정도 영향력이 있는 연구 중 하나인 Hubel & Wiesel, 1959의 연구
고양이 뇌속에 Electrical signal을 심고, 사과를 보고 어떻게 사과를 인식하는지 알아내는 실험.
-> 모서리를 보고 가장 많이 반응함.
-> 생명체가 어떤 사물을 인지하는 데 있어 가장 많이 영향을 주는 부분이 모서리.
출처 : https://blog.pigno.se/post/183382418888/stanford-cs231n116-introduction-to-cs231
* Edge Detection 알고리즘 (경사하강법의 출발)
모서리를 인지하는 것->명암의 극적인 반전. 명암에 대한 값이 갑자기 밝았다가 어두워지는 기울기값. 갑자기 기울기값이 확 꺾이는 값. 미분으로 구함.
하지만 모서리로 사물을 판별하기에는 정보량이 부족했다.
Convolutional Neural Network (CNN)
1998년에 LeCun(르쿤)이라는 사람이 발표. 이름 알아둘 것.
딥러닝의 3대 선구자 왼쪽에서부터 얀 르쿤, 제프리 신튼, 요수아 벤지오. 맨 오른쪽에 있는 앤드류 응도 딥러닝에서 유명한 사람임 |
얀 르쿤이 만든 최초의 CNN
출처 : http://aidev.co.kr/deeplearning/8840
1998년에 얀 르쿤이 만든 CNN이 빛을 못 보다가 2010~2012년 사이에, 정확히는 2012년에 빛을 발함.
전세계적으로 이미지를 알아맞히는, 이미지넷이라는 대회가 있었음. 1년에 에러율을 1%씩 줄이는 것을 목표로 한 대회.
2012년에 10%의 에러율을 낮추게 되고, 전세계 연구진이 놀람->거기서 사용한 알고리즘이 CNN. 그 이후부터 에러가 확 줄음. 2015년에는 인간을 능가하는 분류 => 인간을 능가했다고 해서 이미지넷 대회 없어짐.
참고 : https://blog.naver.com/cni1577/221920601686
레이어가 하나인 경우 ANN (Artificial Neural Network) Deep => 레이어가 여러개. 레이어가 2개 이상 DNN(Deep Neural Network) |
대회에서 사용했던 데이터셋을 많이 가져다 씀.
-> MNIST ( 참고 : brunch.co.kr/@minwoo/25 )
-> CIFAR-10 ( 참고 : gruuuuu.github.io/machine-learning/cifar10-cnn/ ), CIFAR-100
=> CIFAR-10이 정보량이 더 많아서 MNIST보다는 정확성이 떨어짐.
Classification
특성들을 데이터로 넣는 게 아니라 이미지를 데이터로 넣음.
선형회귀가 여러개 있는 게 딥러닝.
들어온 이미지에 대한 예측.
잘했는지 못했는지 역시 계산 가능. Loss Function
이건 정량화된 게 아니므로 다른 Loss Function을 쓴다.
컴퓨터는 고양이 사진을 0~255 사이의 픽셀값으로 인식한다.
판떼기가 하나 있으면 흑백. 판떼기가 3개(RGB) 있으면 칼라 => 3 Channels을 이룬다.
illumination(조도)에 따라서도 고양이인 걸 인지할 수 있어야 하고 Deformation(변형)에 대한 훈련도 필요하며 다양한 사진으로 변화를 주면서 학습해야 한다.
이미지가 들어왔을 때 머신의 학습의 결과로 이미지의 결과에 해당하는 라벨을 정확하게 예측해야 한다.
-> 이전까지는 모서리로 구분했는데 정확하지 않다.
Data-Driven Approach
많은 양의 데이터, 모든 경우의 수를 나타낼 수 있는 데이터로 학습을 시켜야 정확도가 올라감.
데이터를 확보하는 게 어려움. 개개인이 확보할 수 없음.
1. 이미지와 함께 라벨을 모은다 2. 분류를 위한 학습을 시킴 3. 새 사진에 적용하고 평가 |
모델은 train 모델과 test 모델.
Nearest Neighbor
처음에 5만장의 데이터 집어넣고 학습 -> 그리고 나서 새로운 데이터 집어넣어서 예측... 그런데 5만장을 일일이 다 비교해서 유사도를 계산... 그 5만장 중 유사도가 가장 높은 것... (5만번 다 돌려야 하는데 엄청 느림. 요즘엔 잘 안 씀)
교차 검증 ( Cross-Validation )
용어 알아둘 것!
hyperparameter(= Heuristic Values) : 배움을 위해서라기보다 인간의 경험에 의해 선택되어져야 하는 값. 성능에 꽤 많은 영향을 미침.
DataSet 1) Training DataSet 2) Validation DataSet 3) Test DataSet |
validation은 학습은 안 됨. 그냥 모의고사임.
학습을 시키지는 않음. 학습 대상을 수정하지 않음! 하지만 Accuracy를 보고 학습을 더 시켜야겠다 learning rate를 낮춰야겠다 이런 걸 추측해서 다시 돌릴 수 있음. 하이퍼파라미터 튜닝의 용도로 쓰는 것.
Back Propagation 해서 가중치(Weight)를 수정하는 건 할 수 없음. 이건 Test에서 함.
5만개 문제 실컷 풀고 가서 실전에서 떨어지면 또 5만개 문제 또 풀어야 함. 그래서 모의고사를 봐야 하는 것.
Cross Validation은 일반적인 방법이 아님.
데이터가 턱없이 부족할 때 임시방편적으로 쓰는 방법이 Cross Validation
학습데이터(Training Data)를 돌려가면서 씀.
사실 데이터가 너무 적을 때는 딥러닝으로 돌리면 안 됨. 어쩔 수 없는 예외적인 상황에서 사용.
4 Epoch => 4번 돌림. epoch이 4.