JH
사용자 피드백을 통한 소량 이미지 데이터 분류의 성능 향상

연구 인원
본인 역할
개발 환경
총 3명 / 딥러닝 모델 설계 및 구현 2명
데이터 크롤링, 데이터 전처리, 딥러닝 모델 설계 및 구현(기여도 : 85%)
1) Tool : jupyter notebook, ubuntu
2) Language : keras, tensorflow, python3, Java, MySQL

프로젝트 소개 (요약)
오픈마켓을 통해 크롤링 한 소량 이미지 데이터 셋을 가지고, 딥러닝과 사용자 피드백을 통해 이미지 분류 성능을 향상한 프로젝트입니다.
Q1. 이 연구를 개발한 목적이 궁금한데?
A1.
최근 데이터 마이닝 논문을 검색하여 공부하면서, 사람이 해석할 수 없는 높은 복잡도를 가지는 딥러닝에 대해서 알게되었습니다.“사람이 기계를 학습시키지만 그 안을 사람이 모른다”라는 것에 대해 관심이 생겼습니다. 하지만 딥러닝의 높은 성능을 보장하기 위해서는 대량의 정보가 필요하였지만, 시간, 비용 부분에서 문제가 생겼습니다. 소량의 데이터를 가지고 성능을 높일 수 있는 방법을 생각하다가 기계에게 도움을 주면 좀 더 성능을 높일 수 있지 않을까 하였고, 대학원 전공과목 중에서 사용자와 기계간의 상호학습 수업을 통해 힌트를 얻어 개발하였습니다.
Q2. 어떻게 함께 학습했니?
A2.
총 4가지 학습 단계를 가집니다.
1) 딥러닝 네트워크 모델을 구성하고, 잘 알려진 CIFAR-10 데이터 셋을 이용하여 네트워크를 사전 학습시킨다.
2) 사전 학습된 모델에 주어진 소량 이미지 데이터를 학습시킨다.
3) 주어진 모델에 이미지를 대표하는 태그를 사용자로부터 피드백 받아 추가 딥러닝 레이어를 구성하고 학습시킨다.
4) 실제 이미지 분류 테스트 시에는 세 번째 단계에서 추가한 태그 입력 레이어를 제거하고 이미지를 분류한다.
Q3. 다른 방법은 생각한 적 없니?
A3.
1. CNN(Convolutional neural network) 딥러닝 모델과 LSTM(Long-short-term-memory)의 딥러닝 모델을 더한다는 의미에서 Attention Mechanism을 실험하고 있습니다.
2. 태그 주는 방식을 다르게 생각해보았습니다. 카테고리를 대표하는 단어 하나를 지정하여 “있다, 없다”로 표시하여 좀 더 객관적이게 주는 것이 좋을 것 같은 생각이 들었습니다. 해당 사항은 실험 중에 있습니다.
개발 내용(본인 구현 부분)

[그림 1] 아이템 정보
> 11번가 오픈 소스를 통하여 각 카테고리 당 200개의 아이템을 크롤링하였습니다.
> 크롤링 된 데이터는 데이터 베이스에 구성한 테이블로 저장되도록 하였습니다.
> 카테고리 : "computer", "shoes", "pants", "book", "phone", "toy","maskpack","sunglasses","socks","bicycle"

[그림 2] 태그정보
> 사용자 피드백인 태그는 이미지 명에서 이미지를 대표하는 단어입니다.
> 중복된 태그를 제거한 모든 태그의 개수는 154개입니다.
> 이 태그는 레이블과 연결되어 저장되고, one-hot 인코딩을 통해 나타낸 뒤 학습하였습니다.

[그림 3] 이미지 딥러닝 모델 네트워크
> vgg16 딥러닝 모델을 이용하여 이미지 특징을 추출하였습니다.
> 필터를 거쳐나온 텐서의 크기를 줄여 파라미터 수를 줄이기 위한 용도로 max pooling을 사용하였습니다.
> 전처리는 이미지 필터를 해치지 않은 최소 크기 3 * 3 필터를 사용하고 2차원 텐서를 1차원으로 변경한 후 덴스 레이어에 입력하였습니다.
> CIFAR10 데이터 셋을 이용한 사전 학습(Transfer learning)을 수행한 뒤,아이템 데이어들을 학습시켜 정확도를 확인 하였습니다.

[그림 4] 이미지 및 사용자 피드백 딥러닝 모델 네트워크
> 태그의 마지막 덴스 레이어와 이미지만을 학습한 모델에서의 마지막 덴스 레이어를 연결한뒤, 태그를 학습하였습니다.
> 연결 설정 : 이미지 분류에 맞춰 구성된 모델에 태그의 갱신이 전부 일어 날 경우 원치 않은 결과가 나올 수 있기 때문에 마지막 덴스 레이어만 가중치가 갱신되도록 하였습니다.
> 최종 모델은 그림 4의 점선 부분을 제거하고 이미지만을 학습한 모델에서 Softmax를 통하여 정규화하였습니다.
> 이미지만을 학습한 모델에서 마지막 덴스 레이어가 태그 학습 시 영향을 받았다고 가정하고 진행하였습니다.