Sequential Data는 순차 데이터라는 의미로, 시간에 따라 순차적으로 데이터가 들어온다는 것을 뜻한다! 대표적으로 주식 차트같은 느낌. 문자열이나 음성 역시 순차 데이터로 볼 수 있다. (동적 데이터) - 시간에 따른 순서가 의미가 있으며, 순서가 뒤바뀔 경우 의미가 손상되는 데이터. 반면 지금까지 해온 데이터(사람 얼굴같은 이미지, 스펙트로그램 등)은 시간에 따라 데이터가 변하거나 하지 않았다. (정적 데이터) 순차 데이터는 일반적으로 RNN(Recurrent Neural Network, 순환 신경망), LSTM(Long Short Term Memory)과 같은 방법으로 학습을 진행한다. 순차 데이터 역시 이미지화하여 CNN을 통해 학습할 수도 있다. 하지만 동적 데이터는 동적 데이터 답게 처..
CNN에 꼭 개나 고양이, 사람 얼굴 사진만 집어넣어야 할까? 소리. 소리도 CNN에 집어넣을 수 있다. 세상에... 정말 대단한 발상이 아닐 수가 없다. 그런데 어떻게 소리를 학습한다는 말일까?? 귀가 달렸나? 그것은 바로 스펙트로그램이라는 이미지를 이용하는 방법이다. 스펙트로그램이 뭐냐 하면 소리나 파동을 시각화 하기 위해 만들어진 그래프이다. CNN은 이미지를 input으로 받는다. -> 소리를 스펙트로그램으로 시각화한다 -> 스펙트로그램을 이미지 input으로 넣는다 -> 사람의 목소리를 예측할 수 있다....!!!!!!!!!!!!!!!! 눈으로 볼 수 없는 음성이나 파동도 시각화 할 수 있는 그래프만 존재한다면 이미지로 변환하여 학습할 수 있다는 것이다. 허거덩... 이게 정말 혁명 아닐까 조금..
머신 러닝은 지도학습과 비지도학습으로 나뉘고, 지도학습은 두가지 모델로 나뉜다고 했다. 바로 분류(Classitication) 모델과 회귀(Regression) 모델이다. 지금까지 배워왔던 것은 모두 분류모델으로, 사전에 정해진 categorical 데이터 중에서 점수가 가장 높은 하나를 찾아서 output을 뽑아냈었다. 하지만 회귀 모델은 정해진 categorical 데이터가 없고, 연속적인 값을 추정하는 모델이다. 어떻게 하면 회귀 모델을 만들 수 있을까?? 방법은 생각보다 매우 간단한데,,, 네트워크의 끝부분 레이어 몇개만 수정해주면 된다. alexnet을 예시로 들면, 네트워크가 23번 fullyConnectedLayer -> 24번 SoftmaxLayer -> 25번 ClassificationO..
CNN에서 Network Training을 할 때 사용되는 option에 대해 알아보자 일단 대략적인 순서는 다음과 같다 1. 학습 데이터를 Train Set, Test Set, Validation Set 세 가지로 나눈다 Training Data - 가중치 학습에 사용되는 데이터 Validation Data - "학습 중" 성능 평가에 사용되는 데이터 Test Data - "학습 모두 끝난 후" 성능 평가에 사용되는 데이터 [trainData, valData, testData] = splitEachLabel(DataSet, 0.8, 0.1, 0.1); 2. option 설정 2-1) 알고리즘 * 대부분의 알고리즘은 "★경사 하강법★"을 기반으로 한다 - Loss Function에서 제일 최소점을 향해 ..
# Convolutional Neural network의 레이어 구성 여기서, FullyConnectedLayer는 있는 경우도 있고 없는 경우도 있다. 대충 앞에서 다 봤으니 빠르게 알아보자 # ImageInputLayer - input size를 정의하고, 데이터를 정규화한다. (정규화는 데이터의 평균값을 구해서 빼는 방식) # Convolution Layer - Feature Extraction 하기 위해 사용된다. CNN에서 가장 핵심 레이어. - input 파일에 필터를 씌운다(Sliding Filter) - 필터 내부 값(가중치 값)은 내가 정하지 않음. 훈련을 통해 특징을 잘 찾아내도록 계속 수정해 가는 것. - 필터 사이즈만 정해주면 내부 가중치는 학습을 통해 만들어진다. - Transfe..
네트워크를 사용하는건 세가지 방법이 존재한다 1. Pretrained Network - 다른 사람이 만들어놓은 네트워크를 그냥 그대로 사용한다 2. Transfer Learning - 다른 사람이 만들어놓은 네트워크를 가져오되 내 입맛에 맞게 수정해 사용한다 - 네트워크 뒤편, Fully-Connected Layer, output Layer만 수정해서 사용하기만 해도 된다. - 상당수의 경우 Transfer Learning 네트워크만 사용해도 만족스러운 결과를 예측한다. - 단, input 입력 크기가 고정되어 있기 때문에 이 조건에 맞지 않으면 사용할 수 없거나, 성능이 매우 떨어진다. (input이 3채널 이상이거나, 이미지 크기가 맞지 않거나(업스케일링-> 픽셀 깨짐 -> 성능 하락) 등..) 3...
* 레이어의 상세 동작 원리는 다루지 않습니다. CNN을 통해 Image에서 Feature을 추출하는 레이어 [Convolutoin, Pooling, ReLU] 에 대해 알아보자 참고) CNN은 input으로 이미지만 받아야 하는게 아님 (n x m 2D 배열이면 다 됨) - 단, 이미지가 아니면 결과를 시각적으로 알아보기 힘들 뿐. 이번 수업에서는 squeezenet 모델을 전이학습으로 사용해본다. analyzeNetwork(net) 위 메소드를 사용하면 해당 모델의 레이어 구성을 시각적으로 확인할 수 있다. squeezenet 네트워크는 총 68개의 계층(레이어)가 있다는 것을 알 수 있다.. (대학원 석사쯤 밟고 AI 분야로 취업하면 저렇게 많은 레이어들을 하나하나 구성하고, 가중치 조절하고 하면서..
# Image Datastore 머신러닝을 하기 위해서는 수많은 데이터를 사용해 학습시켜야 한다. 이런 이미지들을 모두 불러와서서 학습시키기에는 프로그램에 너무 많은 부담이 된다. 따라서 매트랩에는 이미지를 전부 불러올 필요 없이(변수로 저장해둘 필요 없이), DataStore가 이미지의 메타데이터를 담아두고 있다가, 필요할 때 직접 꺼내쓰는 방식을 사용한다 => 메모리 절약, 속도 향상 내가 이해한게 맞나 모르겠다. 다른 한글 자료가 없더라. 영어가 필수야 필수;; 다음으로, 이미지의 상태가 정상이 아닌 경우(잘렸거나, 회전했거나, 찌그러졌거나 등..) 전처리 과정을 거칠 필요가 있다. (Preprocessing) 전처리 과정은 "augmentedImageDatastore" 이 담당해서 해준다. 지금까..