DEEG조

cdc wiki
DEEG (토론 | 기여)님의 2019년 6월 20일 (목) 22:32 판 (완료작품의 평가)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : EEG를 통한 시계열 데이터 임베딩 모델 생성 및 state Classification

영문 : EEG-based state Classification using Embedding Model with Recurrence plot

과제 팀명

DEEG

지도교수

유하진 교수님

개발기간

2019년 3월 ~ 2019년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2015920044 장유진(팀장)

서울시립대학교 컴퓨터과학부 2015920004 김건회

서론

개발 과제의 개요

개발 과제 요약

◇ 시계열 데이터는 시간의 경과에 따라 관측된 데이터로 time plot 을 그림으로서 다음과 같이 시계열의 특징을 쉽게 파악할 수 있다. 그런데 최근 그저 시계열 데이터 값을 그래프로 나타냄으로서 그 특징을 파악하는 것이 아닌 그 변화 패턴을 하나의 행렬 이미지로 나타낼 수 있는 Recurrence Plot이 등장했다. Reccurence Plot 이란 Dynamical System 상에서 Phase Space 내에서의 임의의 시간 i, j 에 관한 Unique Point의 대응 관계에 대한 그래프라 볼 수 있다. Recurrence Plot을 이용하면 EEG time-series 데이터의 여러 특징을 잡아서 어떤 것을 색으로, 어떤 것은 특정 축으로 나타내어 각 data에 따라 다른 matrix 이미지를 만들어낸다. Img1.jpg

우리는 머신러닝 중에서 가장 주목 받는 인공 신경망 기반 딥러닝을 사용하기로 하였고, 높은 성과를 보이는 이미지 데이터 분석에 이 시계열 데이터를 이용하기로 하였다.

◇  우리가 Deep Learning에 사용하기로 한 데이터는 Electro-encephalogram, EEG time-series data로, 더 깊은 주제로는 인간의 뇌파에 따른 감정, 상태를 label로 나타낸 EEG dataset을 이용하기로 하였다. Kaggle에 있는 EEG 관련 dataset을 살펴보면 EEG분석을 의료, 범죄, 심리학 등에 다양하게 이용할 수 있었다. 그러하여 활용도가 높은 EEG dataset을 우리 논문의 학습 데이터로 정하였다.
우리가 사용하는 EEG dataset은 Muse EEG headband를 이용하여 측정된 데이터로, 4개의 채널로 시간의 흐름을 따라서 뇌파를 각각 측정한다. TP9, TP10으로 forehead electrodes를 측정하고 AP7, AP8로 ear electrodes를 측정한다.

TP9, TP10 channel을 예시로 보면 그 시계열 데이터의 값의 범위가 감정별로 주로 다음과 같이 나타나는 것을 알 수 있다. Img2.jpg

따라서 이러한 결과를 통해 EEG분석으로 감정의 예측이 가능하다고 보았다. channel의 수가 많을수록 각 time-series data 집합에 따라 감정을 분류할 비교 요소가 많아지기 때문에 해당 channel들이 감정별로 정확한 분류 기준이 나눠 된다면 감정 분류에 도움이 된다. 우리는 EEG를 데이터 셋으로 이용하여 다양한 상태의 예측을 해보고자 하였고 이를 모두 종합한다면 실제 다양한 감정분류에 EEG를 사용할 수 있을 것이라고 생각하였다.

◇ 우리의 Deep learning 에서 이용될 cost function인 ‘Triplet Loss’는 Input과 Label의 명시적인 1대1 대응을 통해 학습시키는 기존의 딥러닝 방식과는 다르게 각각의 데이터가 특정 N차원 Eclidean Dimension에서 어느 위치에 사상되는지를 학습하도록 하는 방법이다. 학습 방법은 다음과 같다.

먼저 기준이 되는 어떠한 Anchor 이미지에 대해 Anchor이미지와 같은 Labeling이 되어있는 Positive 이미지와 다른 Labeling이 되어있는 Negative이미지를 선택한다. 그 후 각각의 이미지를 모델에 넣어 여러 레이어를 거친 후, 결과로서 나온 각각의 벡터 데이터의 Euclidean Distance를 구한다. 이 때 각 Anchor로부터 Positive 이미지와의 거리, Negative 이미지와의 거리를 측정하는데, Anchor와 Negative 이미지사이의 거리가 Anchor와 Positive 이미지 사이의 거리보다 α 만큼 멀도록 학습시키는 것이 Triplet Loss의 역할이다.

α는 Anchor와 Positive의 거리와 Anchor와 Negative의 거리가 최소한 어느 정도 차이가 나게 하여 각 데이터에 대한 명확한 구분이 가능하게 해준다. Img3.jpg

이 때 Loss는 α만큼의 차이를 만드는 조건에 만족할 경우 0, 만족하지 못할 경우는 그 차이가 된다.

이와 같이 Triplet Loss를 사용하여 학습을 할 경우 각각의 데이터가 무엇인지를 학습하는 것이 아니라 이러한 데이터는 이 곳에 사상된다는 것을 학습시키기 때문에 적은 수의 데이터로도 One Shot Learning을 가능하게 한다는 장점이 있다. 또한 실제 학습 시 모든 Triplet을 사용하는 것이 아닌 Hard Triplet, 즉 위 식을 만족하지 못하는 데이터들만을 가지고 학습을 시키는 방법을 사용함으로서 타 모델과 비교했을 때 Fast Convergence를 이룰 수 있도록 해준다. 즉 더 빠르고 정확하게 학습을 할 수 있는 것이다.
◇ Triplet Loss를 Cost function으로 이용해 Siamese Network 에서 임베딩한다. 
Siamese Network는 학습이 끝나면 테스트 이미지를 네트워크에 집어넣고 support set 중에서 어떤 이미지가 가장 같은 카테고리에 속하는지 맞춰보게 한다. 이를 위해 샴 네트워크(siamese neural network)는 두 개의 이미지를 각각 하나의 네트워크에 집어넣어 최종적으로 두 이미지가 같은 클래스인지에 대한 확률값이 나오게 설계되어있다.
샴 넷의 가장 큰 특징은 대칭성(symmetry)을 가진다는 점이다. 두 이미지 x1과 x2가 있다고 했을 때, x1∘x2는 두 이미지가 같은 클래스에 속해 있다는 뜻이고 그렇다면 x1∘x2과 x2∘x1는 항상 같은 결과가 나와야한다. 즉 샴 넷의 결과물인 p(x1∘x2)는 p(x2∘x1)와 항상 같아야하는 것이다. 이러한 대칭성이 매우 중요한 이유는, 샴 넷의 가장 큰 특징 중 하나가 distance metric을 사용하기 때문이다.

개발 과제의 배경

◇ Nima Hatami의 'Classification of Time-Series Images Using Deep Convolutional Neural Networks' 라는 우리의 실험 배경이 되는 논문에는 Recurrence Plot과 CNN을 이용한 성능 실험의 내용이 있다. 이 논문의 모델의 성능은 특정데이터에서는 조금 부족한 경향이 있었다.
그리고 또 다른 배경 논문으로는 Google사의 FaceNet이 있는데 FaceNet은 얼굴인식 분야에서 95%~99%의 정확도를 보여주는 이미지 분류 기술로 ‘Triplet Loss’라는 새 개념의 cost function을 이용한 기법이다.

우리는 두 배경논문을 분석하여 두 기술을 접목시켜 이미지 분류를 하는 모델을 생성한다면 더 좋은 성능을 낼 것 이라는 결론을 내었다. 또 우리가 사용할 EEG time-series data에 뿐만 아니라 여러 종류의 time-series data에 적용할 수 있을 예측 모델을 만들어 다양한 분야에서 활용될 수 있는 효과를 기대한다.

개발 과제의 목표 및 내용

 ◇ 우리 실험 논문의 목적은 배경 논문에서 사용된 Deep Learning 방법들을 연구하고 학습하여 재현       하고, 기존 논문의 분류 모델보다 더 성능이 좋은 분류 모델을 만드는 것이다.
 ◇ Input 데이터로 Kaggle 에서 받은 EEG 데이터를 사용하기로 한다. 이 time-series data는 여러 컬럼 값들을 갖고 있고 3가지 출력값으로 사람의 감정을 ‘긍정적’, ‘중립’, ‘부정적’으로 나누어 놓았다.
 ◇ 우리의 데이터 machine Learning 방법은 대략적으로 다음과 같다.

① 수치로 나타내진 time-series data set을 Recurrence plot을 이용해 이미지 데이터로 만든다. ② 이미지 데이터를 Triplet Loss를 Loss Function으로 사용한 Siamese Network로 학습한다. ③ 임베딩된 값을 최종적으로 1-NN Classificaion을 이용해 분류한다. ④ 올바른 분류, 예측이 되었는지 평가한다.


1) Recurrence Plot을 이용하면 수치로 나타내진 time-series data set을 이미지 데이터로 만든다. recurrence는 특징값이라고 할 수 있는데 time-series data의 두 개 이상의 시점에서의 데이터 값이 비슷할 때 그 값들로 이루어진다. 여러 차원의 많은 값을 지니고 있는 time-series 데이터의 N개의 point 중 m차원의 값을 Si라고 할 때, time-series data는 si, si+t, si+2t,..., si+(m-1)t 로 표현할 수 있다. recurrence plot을 통해 할 것은 우선 이 값들을 2차 matrix로 나타내는 것이다. matrix의 각 값인 Rij는 point Si와 Sj 사이 거리를 나타내며 이 matrix는 대칭인 사선을 나타낸다.

recurrence plot의 원리식은 다음과 같은데, Img4.jpg 이를 좀 더 설명하자면, 두 point 사이 거리가 지정한 임계치보다 낮다면 우리는 그 시스템이 recurrence를 나타낸다고 말한다. 이 matrix는 두 가지 방법으로 나타낼 수 있는데 하나는 matrix 이미지를 다른 색상들로 나타내는 것이다. 이 다른 색상들은 각 위치에서 계산된 거리에 따라 다르게 나타난다. 다른 방법은 흑백 채도로 나타내는 것인데, 흑이면 이 Rij값은 recurrence를 나타내는 것이고 백이면 나타내지 않는다는, 거리 차이가 임계치보다 크다는 것을 의미한다. 우리는 recurrence point들의 분배에 따라 time-series data를 matrix 이미지로 정량화할 수 있다. 위 설명대로 다음과 같이 대칭인 recurrence plot이 형성되는 것을 살펴 볼 수 있다.

2) Recurrence Plot을 이용해 이미지 데이터를 얻은 후 Triplet Loss를 Cost Function으로 사용한 Siamese Network로 학습한다.
Siamese Network란 One Shot learning을 이루기 위하여  고안된 Network이다. 인간의 경우에는 One Shot Learning이 쉽고 자연스럽게 이루어지지만 기존의 Classification 모델들은 아쉽게도 그러지 않다. 특히 Data Set이 적을 경우 문제가 부각되는데, 적은 Data Set의 특성항 Overfitting이 쉽게 일어나기 때문이다. Siamese Network는 이 때문에 고안된 방법으로 두 개의 대칭되는 CNN 모델로 구성되어있다. Siamese Network는 특정 데이터가 무엇인지 학습하는 것이 아니라 두 데이터가 같은 Class인지 아닌지를 학습하는 방법으로 기존의 One Shot Learning 문제를 해결한다.

3) Triplet Loss는 다음 식을 통해 설명할 수 있는데, Img5.jpg

CNN을 거쳐 결과로 나온 각 Anchor, Positive, Negative 이미지 벡터 데이터에 대하여, Anchor와 Positive 벡터 사이 거리보다 Anchor와 Negative 벡터 사이 거리가 최소한 위 α 정도는 차이가 나게 하여 각 데이터에 대한 명확한 구분이 가능하게 한다.

학습방향을 결정하는 최종적인 Cost Function은 다음과 같다. Img6.jpg

4) 최종적으로 임베딩된 값을 1-NN Classificaion을 이용해 분류하고 올바른 분류, 예측이 되었는지 평가한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황
◇"Researchers develop a new technique to forecast geomagnetic storms"
   Recurrence plot을 이용한 지자기 폭풍 예측 

독일의 Potsdam 기후 영향 연구 기관의 연구원 집단은 지자기 폭풍의 단기간 예측에 도움이 될 새로운 자기장 데이터 분석 방법을 보고했다. 데이터로 연구원들은 지구 자기장 맞은편의 자기장을 만드는 지구 주위의 고리 전류의 힘의 크기에 대한 정보를 주는 시간별 Dst(Disturbance storm time)값, time-series 데이터를 이용했다. time-series 데이터는 특정 시간사이에서 다른 포인트에 대한 한 데이터 포인트를 plotting함으로서 2-D이미지 혹은 3-D 이미지로 재현 가능하다. 연구원들은 Recurrence quantification을 이용해 time-series데이터를 긴대각선이 있는 Recurrence Plot으로 나타내고 이는 예측가능한 지자기장 행동을 나타낸다. 이 방법은 여러 종류의 지자기장 변동을 구별하기에 알맞다고 보고되었으며 연구원들이 이전보다 큰 정확도로 구별 가능하게 한다.

출처 : https://phys.org/news/2018-08-technique-geomagnetic-storms.html#jCp

◇네이버, 딥러닝 기반의 CNN기술 활용해 이미지검색 개편

네이버는 이미지 검색에 사용자의 검색 의도와 실제 이미지 자체 분석해 보다 향상된 검색 결과를 제공할 수 있게 되었다. 딥러닝 기반의 다양한 이미지 이해 기술들을 적용하며 검색 품질을 고도화하였고 네이버는 딥러닝 CNN을 활용해, 이미지검색을 개편했다고 하였다.

사용자들이 네이버 검색을 통해 다양한 통계 정보, 대중교통의 시간표, 글귀, 악보, 인공지능 기반의 최신 기술까지도 이미지로 빠르게 습득하기를 원하는 니즈가 커지고 있음을 반영하여, 네이버는 보다 고도화된 이미지 분석과 이해 기술이 필요하다고 판단하였으며, 기존의 정보검색 기술과 딥러닝 기반의 이미지 분석 기술을 함께 응용하는 연구를 진행했다.

사용자의 검색의도와 이미지 자체가 어떤 이미지인지 분석해 사용자 의도와 이미지 분석 정보를 연결시켰다. CNN 기술을 이용해 이미지를 분석한 정보와 연결시킴으로써 텍스트와 이미지를 함께 고려하는 이미지검색 랭킹 기술을 개발한 것이다.

출처 : 인공지능신문(http://www.aitimes.kr)

◇Google FaceNet
FaceNet은 Google에서 사용하고 있는 얼굴 인식 기술로, 구글은 1만3000여명의 얼굴 사진이 들어 있는 데이	 터세트 ‘레이블드 페이시스 인 더 와일드(Labeled Faces in the Wild)’에 페이스넷을 적용한 결과, 정확도가 100%에 가까웠다고했다. 또 2억6000만명의 얼굴 사진을 가지고 진행한 실험에서도 86% 이상의 정확도를 보였다.
FaceNet 시스템은 face similarity 수치를 계산해 특정 위치의 Euclidean space로 얼굴이미지 mapping시키기를 학습한다. Euclidean space를 완성시키면 그 공간상의 벡터들을 face recognition, verification 그리고 clustering 등등에 이용한다.
Euclidean space로의 임베딩에 deep convolutional network를 이용하고 학습하는데 triplet loss라는 기술을 이용해 매칭 되는 얼굴과 비매칭 되는 얼굴을 구분한다. Google사의 FaceNet의 장점은 효율성인데, 한 얼굴 인식에 오로지 128byte의 공간을 필요로 한다.

참조 논문 - [FaceNet: A Unified Embedding for Face Recognition and Clustering(Florian Schroff, Dmitry Kalenichenko, James Philbin)]

  • 기술 로드맵

파일:Deegmap.jpg

시장상황에 대한 분석

  • 경쟁제품 조사 비교

Emotional state classification from EEG data using machine learning approach : eeg데이터를 분석, 학습하여 뇌파에 따른 감정 상태를 Classification하는 논문이다. 딥러닝은 사용하지 않고 머신러닝의 접근 방식을 차용하여 접근하였다.

Classification of Time-Series Images Using Deep Convolutional Neural Networks : Time-Series Data를 Recurrence Plot을 이용하여 이미지로 바꾼 후 CNN(Convolutoinal Neural Networks)을 사용하여 Classification하는 방법을 제안한 논문으로서 UCR에 있는 EEG를 포함한 많은 Time-Series Data에 본인들의 모델을 적용시켜 비교 분석하였다.

FaceNet : 구글에서 2015년도에 발표한 논문으로서 얼굴 이미지를 Classification, Recognition, Clustering함에 있어 처음으로 Triplet Loss를 사용한 모델을 제시하였고 매우 높은 정확도를 달성해내었다.

EEG-Based Emotion Recognition Using Deep Learning Network with Principal Component Based Covariate Shift Adaptation : 3개의 autoencoder와 2개의 softmax classifier를 이용하여 만든 Network로 EEG를 통해 감정 분류

EEG Based Emotion Identification Using Unsupervised Deep Feature Learning : Unsupervised Learning을 통하여 EEG에서 감정 분류

Emotion Recognition Using Multimodal Deep Learning : EEG와 EOG에 Multimodal Deep Learning 을 적용하였으며 SEED Dataset에서 91퍼센트의 정확도를 보임

EEG-BASED EMOTION CLASSIFICATION USING DEEP BELIEF NETWORKS : Unsupervised Learning을 이용한 DBN(Deep Belief Network : HpyerParameter의 업데이트를 역전파가 아닌 정전파를 사용해서 업데이트하는 방법)으로 EEG에서 Emotion 분류

  • 마케팅 전략 제시
◇학부생 논문 대회 또는 학회에 논문을 투고
◇TFKR등 딥러닝 관련 분야에 종사하는 사람들이 속한 그룹에 논문 공유

개발과제의 기대효과

기술적 기대효과

◇기존의 배경 논문들에서 Raw Time-Series Data를 그대로 쓴 것과 다르게 Reccurence Plot을 이용해 데이터 전처리 과정을 거쳐줌으로서 추후 학습에서 특성을 더 잘 잡아낼 수 있게 된다. 즉, Time-Series Data를 이미지화 시킴으로써 다양한 이미지 인식과 관련한. 인공지능 딥러닝이 가능해진다.

◇Triplet Loss를 사용하면 학습할 때 직접적인 일치 여부를 판단하는 것이 아닌 그 라벨에 해당하는 데이터가 특정차원의 유클리드 공간의 어느 곳에 위치하는지를 학습하게 된다. 때문에 많은 양의 데이터를 요구로 하는 기존의 학습과 달리 적은 데이터만으로도 One Shot Learning을 할 수 있으며 Recurrence Plot을 통해 변형된 데이터에서 나타나는 특징들을 더 빠르고 정확하게 학습할 수 있을 것으로 사료된다.
◇전처리되어 이미지로 변환된 데이터를 단순한 CNN으로 학습하는 것이 아닌 Triplet Loss를 Cost Function으로 사용하는 Siamese Network로 학습함으로서 예측 정확도를 좀 더 높인다.
◇Triplet Loss 적용 시 Curriculum Learning을 적용하여 Fast Convergence를 이루도록 한다.
◇Shapelet, BoP, SAX-VSM, TFRP 등등 다른 시계열 데이터 결과 예측보다 정확도가 높은 예측이 가능해진다.

경제적, 사회적 기대 및 파급효과

◇EEG 데이터를 이용한 감정상태 예측으로 심리 치료, 범죄 분석 등등 분야에 사용가능. 
  혹은 정확한 건강상태 예측으로 의료용 목적에 사용 가능.
◇time-series data 분석에 정확도를 높이고 분석 시간을 줄여 기존에 들었던 빅데이터 분석 비용을 이전보다 줄인다.

기술개발 일정 및 추진체계

개발 일정

Img8.JPG

구성원 및 추진체계

◇1. 논문 작성을 위한 모든 실험은 팀 구성원이 모두 같이 시행한다.
◇2. 주제가 비슷한 관련 연구를 조사하고 분석.
◇3. time-series 데이터 수집(ECC..)
◇4. 데이터를 추가하여 관련 연구 재현 실험
◇5. keras로 제안 알고리즘 기반의 실험 모델 구현
  5.1 RP를 사용한 time-series 데이터 이미지화
  5.2 Siamese network와 Triplet Loss를 이용한 이미지의 임베딩 모델 생성
  5.3 Euclidean 공간에 임베딩된 벡터들로 1-NN classification 실행
◇6. 알고리즘대로 실험 수행
◇7. 실험 결과 비교하고 분석
◇8. 필요할 경우, 보충 실험 수행
◇9. 총 실험 결과를 모아 배경 논문과 비교하고 분석하여 논문 작성

설계

설계사양

제품의 요구사항

◇ R1: 배경이 되는 논문의 Recurrence Plot의 오픈 소스를 이용해 실제 EEG time-series data의 이미지화에 적용한다. 또 다른 EEG time-series data를 학습하는 Deep Learning 알고리즘을 보고 직접 구현해본다.
◇ R2: 새로운 기술을 기존 분류모델에 적용시켜 기존보다 정확도 및 학습 속도가 향상된 임베딩 모델을 생성한다.
◇ R3: 적은 양의 데이터 셋으로 높은 accuracy를 얻을 수 있기 때문에 데이터를 충분히 확보하기 힘든 상황에서 다양한 분야에 적용할 수 있도록 한다.

설계 사양

◇ F1: RP(Recurrence Plot)를 이용한 Time-Series data의 이미지화(R-matrix화)
◇ F2: 이미지를 Siamese Network에 Triplet Loss를 이용하여 Embedding Model 형성 및 Learning
◇ F3: vector로 representation된 데이터들을 이용한 1-NN Classification 구현

개념설계안

Model1.png

이론적 계산 및 시뮬레이션

ECG 오픈 데이터에 Recurrence Plot만을 적용시켜 학습 및 시뮬레이션을 했을 때의 결과이다. Ecg1.png Ecg2.png Ecg3.png

Recurrence Plot만을 적용하여 CNN으로 학습시킨 결과, 60~90% 정도의 배경논문과 비슷하거나 조금 더 높은 Error Rate가 나왔다.

상세설계 내용

Rec1.png

위의 함수를 통하여 주어진 시계일 데이터를 이미지로 변환하게 된다.

Tri1.png Tri2.png

위의 함수를 통하여 주어진 이미지들에 대한 가능한 모든 Anchor, Positive, Negative의 Triplet 쌍들을 생성하게 한다.

데이터에 따라서 Recurrence Plot이 적용되고 난 후의 이미지 크기가 다르고 Triplet 생성 함수가 인자로 받는 데이터 형식과 Reccurence Plot의 아웃풋 데이터 형식이 다르기 때문에 이를 맞춰 호환이 되도록 하였다. Triplet이 다 만들어지고 난 다음에는 이를 사용하여 Loss를 측정하는 CNN모델을 통해 학습이 진행되게 된다.

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

R1.png

위는 Positive, Negative, Neutral 세가지로 Labeling이 되어있는 EEG 데이터를 우리 모델을 통하여 학습시킨 결과이다.

R2.png

위는 피험자가 눈을 감았는지 감지 않았는지를 Labeling한 EEG데이터를 학습시킨 결과이다.


R3.png

위는 눈을 뜬 상태와 감은 상태의 환자, 건강한 뇌와 종양이 있는 뇌를 가진 각 환자, 발작을 하는 경우로 5가지의 Labeling이 되어있는 EEG데이터를 학습시킨 결과이다.

완료작품의 평가

난점

◇ 이용할 기술들을 모두 접목시켜서 하나의 deep learning 모델을 만들기까지 구현하기에 어려움이 있었다.
◇ Triplet Loss는 등장한 지 오래되지 않은 신기술로 그 내용을 자세히 이해하고 직접 적용해보기에 복잡하고 확실히 우리의 학습 모델의 loss function으로 좋은 성능을 내는지 진위 판별을 하기 까지 시간이 들고 어려웠다.
◇ 우리의 프로젝트에 사용할 적합한 Time-series dataset을 찾는 것에 어려움을 겪었다. 프로젝트의 dataset 요구조건이 충분한 양의 data, 4가지 이상의 label, data의 정확도였는데, 모두를 충족하는 dataset은 많지 않았다. 
◇ Triplet Selection에 있어서 Online과 Offline 두 가지 방법이 있는데 Online은 매 mini-batch마다 새롭게 hard-triplet을 뽑는 방식이고 Offline은 처음에 가능한 모든 Triplet 을 선정해놓는 방식이다. 우리는 구현상 어려움으로 Offline Triplet Selection 방법을 
사용하였는데 이 방법은 가능한 모든 Triplet을 계산하여 저장해두기 때문에 Memory를 많이 차지하였고 그 결과 구글 Colab을 이용하고도 큰 규모의 데이터를 학습에 이용할 수 없었다.
◇ Triplet Loss를 적용시킬 때는 몇 차원 유클리드 공간에 데이터들을 임베딩 시킬 것인지 정해야한다. 첫 설계 때는 최대 128차원, 최소 라벨의 종류 개수만큼의 차원을 각 학습에 설정할 계획이였지만 임베딩 차원수가 커질 수록 차지하는 메모리 또한 커져갔고 그 결 
과 대부분의 학습에서 4차원 이하의 차원만을 사용했어야 했다.
◇ 오픈 소스를 이용했기 때문에 데이터를 정규화 해주는 부분이 오픈 소스 제작자가 이용한 데이터에 맞게 되어있었다. 그 사실을 모른 채 학습을 진행하여 애로사항이 많이 발생하였으나 오픈소스의 정규화 과정을 우리가 사용하는 데이터에 맞게 수정하니 줄어들지 않 
던 로스가 줄어들게 되었다.
◇ EEG 데이터의 특성 상 튀는 값들이 적지 않게 있어 최댓값, 최솟값을 기준으로 한 정규화가 학습 모델에 적합한 정규화라는 것을 보장할 수 없을 것 같다. 따라서 튀는 값들에 대한 전처리까지 진행한다면 모델의 성능을 더욱 향상될 가능성이 있을 것으로 보인다.

결과

먼저 사람의 감정을 Labeling 한 EEG를 학습시켰을 때 총 데이터의 크기가 47개밖에 되지 않았고 100Epoch만을 학습했음에도 불구하고 Validation Set의 Loss가 0.07까지 내려갔다.
이는 Triplet Loss를 사용한 모델이 One Shot Learning을 가능하게 해준다는 것을 보인 것으로 볼 수 있다. 만약 데이터가 조금만 더 많거나 더 많거나 더 컴퓨팅 파워가 높은 기기를 이용하여 추가적인 학습을 진행한다면
실용가능한 결과를 얻을 수 있을 것으로 보인다.
눈을 감았는지 떳는지를 학습할 때 있어서는 데이터의 양은 많았지만 차원이 낮은 데이터였다. 그래서 학습이 거의 이루어지지 않는 듯 했으나 100Epoch 에가 면서 Loss가 줄어들기 시작했다.
컴퓨팅 파워가 모자라 추가적인 학습을 진행할 수 없었으나 이 또한 추가적인 학습 시 유의미한 결과를 낼 수 있을 것으로 보인다.
1000개의 데이터를 600개의 Training Set, 400개의 Test Set으로 나누어 진행하였다. 최종적으로 Loss가 0.1아래까지 떨어졌으며 라벨이 5개인만큼 Embedding 차원 수를 늘려 학습한다면 더 좋은 결과가 나올 것으로 봉니다.

향후계획

◇ 배경 논문의 재현 실험 결과가 유사하긴 했지만 그 정확도가 배경 논문보다는 조금 떨어졌다. 그렇기 때문에 차후 재현 실험에 있어 오차를 만들게 된 부분이나 개선점을 찾아 적용하여 실제 배경 논문의 실험 평가, 결과와 같은 결과를 낼 수 있도록 재 구현한다.
◇ 기존의 목적이었던 emotion classification을 위한 EEG 데이터 셋의 양이 부족해서 다른 데이터 셋을 이용할 수밖에 없었다. emotion classification EEG 데이터를 찾게 된다면 이를 추가적으로 우리의 학습 모델에 적용해보도록 한다.
◇ 구글 코랩을 사용했음에도 불구하고 Offline Selection방식의 Triplet Loss를 사용하기에는 컴퓨팅 파워가 모자랐다. 추후 더 높은 컴퓨팅 파워를 낼 수 있는 기기에서나 클라우드 서비스를 통하여 학습을 진행하여 최적의 환경에서 학습을 진행해 볼 수 있도록 한다.