728x90

섬유의 전자화의 연구

 오늘 공부할 내용은 나선형 구조 통한 제스처 및 빛 기반의 전자 섬유와의 미세 상호 작용(Extracting Structured Data from Templatic DocumentsEnabling E-Textile Microinteractions: Gestures and Light through Helical Structures)에 대한 내용입니다. 이 포스팅의 경우에는 특히 사진이나 그림으로 설명이 잘 되어 있어 직접 찾아보는 것을 추천합니다. 섬유의 전자화는 생활 전반에 많은 도움을 줄 수 있으며, AI 스피커, 핸드폰의 선 뿐만 아니라 옷까지 다양한 분야에 쓰일 수 있습니다. 이전의 연구들은 그 코드(선) 자체를 전력이나 데이터 측면에서 발전시킬 것인지 중심으로 연구했습니다.

 기기와 섬유의 상호 연결을 위한 방법이 필요합니다. 따라서, 여기서는 사용자가 섬유에 제스처를 가하면 빛으로 피드백을 줄 수 있는 방법 고안해야 했습니다. 최종적으로, ML 기법이 어떻게 섬유의 topology(구조)와 결합하여 discrete 하거나 continuous 한 제스처 모두에 반응할 수 있을지 제안했습니다.

HSM를 기반의 사용자들과 상호 작용

 이를 위해 섬유 자체를 The Helical Sensing Matrix (HSM) - 나선형 센싱 매트릭스 형태로 만들어, 여러 기능을 하는 실들의 꼬여있는 집합처럼 만들고 이를 통해 제스처를 센싱 하거나 시각적으로 피드백 효과를 줄 수 있었습니다. 구성되어 있는 실들은 크게 두 가지로 구성되어 있습니다.

① 전자 절연 전도성 실(electrically insulated conductive textile yarns)과 ② 수동적 지원 실(passive support yarns)입니다. 여기서 실제적으로 우리가 원하는 센싱 역할을 하는 실은 ①로, 정확히 반대 방향에 있는 실들은 서로 용량 감지를 위해 송수신이 됩니다. 사용자가 섬유를 만지면 전자가 흐르므로, 만져진 부분의 ①종류의 실은 반응을 하게 되고, 교차점에 있는 실도 같이 커플링 되어 반응하게 됩니다.(교차점 실들 간의 용량적 연결성이라 부를 수도 있습니다). 실들의 꼬임 패턴은 지속하여 반복되므로 섬유의 어느 부분을 잡든 이런 상호 작용은 가능합니다.

 간단하게 정리하면, 사람이 끈을 만지면 두 개의 실들이(서로 반대편에 위치한) 반응하는데 시간에 따른 ①종류의 실에서 흐르는 전류의 흐름을 보고 사람의 제스처를 대략적으로 판단 가능하다는 것입니다. 사람-섬유가 인터랙션을 알기 위해서 근접성, 닿는 면적, 접촉 시간, 롤링 및 압력 감지(sense proximity, area, contact time, roll and pressure) 등을 고려하여 제스처 구분합니다. 아마 ML 이용하여 학습하는 것으로 추측됩니다.

 

사용자 의존적인 실험과 독립적인 실험에 대한 고찰

 가장 사용자가 많이 쓰는 제스처 5가지와 짧은 잡기 터치 제스처 3가지를 이용하여 실험하였습니다. 사실 사용자마다 잡는 스타일, 선호도, 몸의 구조가 다르기 때문에 각 사람에 대해서 학습하고 실험하였습니다(user-dependent). 각 사용자에 대해서는 94% 정도의 정확도를 보였고 생각보다 빠른 학습 시간도 강점이었습니다(각 제스처당 30초).

 사용자 의존적이지 않은(user-independent) 실험도 해보았습니다. 이를 위해 섬유 활용하는 것, 버튼 쓰는 것, 스크롤에 대해서도 실험하였는데, 사용성이나 정확도 모두에서 좋은 결과가 나왔습니다. 그리고 빠른 반응성과 민감도를 가져서 기존의 하드웨어 컨트롤러보다 쓰기 편한 부분이 있습니다. 예시로, 이어폰 선을 터치하여 뮤직 플레이어를 컨트롤하거나 AI 스피커를 조정하는 기능을 보여주었습니다.

 섬유 구조 자체가 포커스이다 보니, 전반적인 시스템에 대한 설명이 좀 더 있었으면 좋았을 것 같습니다. 아직 피부에 터치되어서 원치 않게 컨트롤되는 경우 등등 실제로 쓰일 때 남아있는 문제점들이 많을 것 같아 이런 부분들이 얼마나 더 발전될지 궁금증을 유발합니다. 현재는 기기들은 유선에서 무선으로 점점 가는 추세여서 이 분야에서는 얼마나 더 우위를 가져갈 수 있을지 의구심이 들기는 합니다. 다만, 옷이나 다른 섬유 분야에서는 사용자와의 인터랙션이 충분히 가능한 부분이어서 이 분야와 연계하여 실질적으로 발전시킬 수 있는 부분을 많이 고안해 봐야 할 것으로 생각됩니다.

 Ubicomp에서도 이런 전자 섬유를 보고 굉장히 신기하지만 실용성에 대한 의문이 생겼는데, 앞으로 어떻게 비즈니스 모델들을 들고 갈지 흥미롭습니다. 이 포스팅의 경우에는 AI에 대한 것이라기보다는 좀 더 새로운 분야에 대한 도전 정도로 봐야 할 것 같습니다.

728x90
728x90

구조화되는 데이터 추출의 필요성

 오늘 공부할 내용은 템플릿 화해되어 있는 문서에서 구조화되는 데이터 추출하기(Extracting Structured Data from Templatic Documents)에 대한 내용입니다. 다양한 사업분야에서 영수증, 주문서 등의 템플릿 호된 문서들을 많이 사용하는데, 이를 정리하는 데 노력이 많이 들고 현재의 자동화된 시스템은 에러도 많고 불안정합니다. 하나의 문서 종류도 회사나 부서에 따라 여러 가지의 템플릿 호될 수 있지만 그 문서들 안에는 같은 콘텐츠들(=필드)을 대부분 공유하고 있습니다. 필드 예시에는 송장 날짜, 항목 합계 등이 있습니다. 이런 콘텐츠(날짜와 가격 같은)를 모두 추출해 주는 자동화 시스템이 만들어진다면 수작업으로 하는 노력도 줄어들고 오류도 줄일 수 있어 효율적인 일처리에 도움이 될 것으로 기대됩니다.

 

NLP와 CV 모두를 아우르는 문제

 이게 쉽게 해결될 수 있는 문제라는 생각이 들 수 있지만 NLP와 CV 모두를 아우르는 문제로서 상당히 어려운 문제임을 알 수 있습니다. NLP의 문제라기에는 문서 안에 제대로 구성된 문장들이 별로 없고, 표나 여러 서식들이 포함되어 이를 이해하는 데 어려움이 있습니다. 단순 CV 문제로 풀기에는 문서 안의 의미적인 부분들이 해석되지 않는 것도 어려움을 증가시킵니다.

 

제안한 추출 시스템의 구조

 전반적인 추출 시스템을 만들기에 앞서, 두 가지의 인풋이 준비되어야 합니다. ① 타깃 스키마 (<추출할 필드(field) 목록, 필드의 타입>, 필드의 타입은 미리 정해놓거나 Google Knowledge Graph 참고합니다), ② 필드들이 레이블 된 학습 데이터를 준비해야 합니다. 일단 이 두 가지를 이용하여 값이 주어질 때 해당 필드에 부합하는 것에 대한 학습을 미리 해놓는 것으로 가정합니다.

 추출 시스템은 크게 세 가지 단계로 이루어집니다. ① Candidate Generator : OCR(사진에서 텍스트 추출해 내는 기술)로 추출된 텍스트 중에서 알아내고자 하는 필드(송장 날짜, 총계)에 해당할 수 있는 텍스트 후보들 선택하는 단계입니다. ② Scorer : 학습된 NN 기반으로 해당 후보가 알아내고자 하는 필드에 적합한지에 대한 점수 계산하는 단계입니다. ③ Assigner : 후보들의 문서에서의 순서도 고려하여(가령 합계는 각 항목 금액이 나타난 뒤에 나옴) 점수가 높은 값으로 최종 값을 선택하는 단계입니다.

여기서 새로 개발한 부분은 바로 Scorer로, 타깃 필드와 추출된 후보들을 인풋으로 받으면 위에서 봤듯이 이 후보들에 대한 점수(0~1)를 계산하여 결과로 도출합니다.

 추출하고자 하는 필드(송장 날짜)의 후보는 한 네모 상자로 표현되는데, 페이지 내에서 표시되는 추출하고자 하는 필드와 연관된 이웃 token들과의 상대적 위치를 계산하여 해당 후보를 표현하는 방법을 씁니다. 이때, 후보의 값 자체는 과적합의 문제가 생길 수 있어 후보를 표현하는 데 쓰이지 않습니다

 위에서 말한 후보 표현을 하고, 점수를 매기는 Scorer 모델 구조는 다음과 같습니다. (Model Architecture) ① word embedding을 통해 이웃 token들을 임베딩합니다. ②두 개의 ReLU 레이어를 이용하여 이웃 token의 상대적 위치 임베딩합니다. ③ ①과 ②를 합칩니다. ④ 각 이웃 간의 맥락을 고려하고 이웃들을 통합하여 표현하기 위해 Self-Attention와 Max-pooling을 이용하여 이웃 인코딩을 만듭니다. ⑤ 그 페이지에서 실제 위치는 ②의 방법을 이용하여 임베딩하고 ④와 합칩니다. ⑥ 마지막으로, 추출하고자 하는 필드 임베딩(필드 임베딩은 이미 ground truth로 학습되어 있음)과 후보 임베딩의 유사성을 비교하여 0~1 사이의 값으로 도출합니다.

정확도 실험 및 궁금했던 점

 대부분의 필드에서 좋은 F1-score가 나왔습니다. 아직 좀 보완해야 할 부분들이 많지만, NLP + CV의 기술들을 적용해서 템플릿 호된 문서를 정리하는 데 많은 도움이 될 수 있는 시스템을 만들었다는 데에 의의를 둡니다. 그리고 과적합되지 않도록 정보의 위치를 기반하여 학습 모델을 만들고 정보를 도출해낸다는 것이 참신합니다. 다른 최신 알고리즘을 더 도입해 볼 예정입니다.

 궁금했던 점은, 그럼 다양한 템플릿에 따라 타깃 스키마를 사용자가 스스로 정해야 하는 것인가? 그렇다면 전문가의 도움이 꼭 필요하지 않을까라는 점. 여기에 대해서는 얼마만큼의 노력이 필요한가?라는 점들이었습니다. 그리고 이 모든 게 OCR을 기반으로 하는 기술인데 그럼 OCR의 성능에 많이 의존해야 할 것 같은데 여기에 대해서 문제는 없는가? (만약 영문이 아닌 다른 나라 언어가 섞여있다면?)에 대한 의문도 존재했습니다. 오늘 배운 부분도 하이브리드 시스템을 만든 것이 장점인 것 같습니다. 알고리즘을 새로 만드는 것도 중요하지만, 알고리즘을 시스템에 맞게 적절하게 사용하는 것을 제안하는 것도 중요한 연구라는 걸 새삼 깨달았습니다.

 

728x90
728x90

"화학 물질" 해석에 대한 설명

 오늘 공부할 내용은 인코딩된 DNA 화학과 ML을 이용하여 "화학 물질" 해석(Unlocking the "Chemome" with DNA-Encoded Chemistry and Machine Learning)에 대한 내용입니다.  단백질을 이해하고 조절하여 사람 병을 치료하는 연구가 많이 되고 있습니다. 이렇게 생활을 지탱하고 병을 만드는 생물학적 네트워크 이해는 복잡함을 띄고 있습니다. 이를 이해하기 위한 한 가지 방법은 "chemical probe(=특정 단백질을 촉진시키거나 억제시키는 분자)"를 이용하는 것이지만 단지 4% 단백질의 "chemical probe"을 현재까지는 찾아냈습니다. 고등학교 이후에 거의 보지 않은 화학 분야라서 읽고 이런 게 있구나 정도를 아는 데에 의의를 두었습니다. 정말 어려운 포스팅이었습니다.

 

물리적 스크리닝과 가상 스크리닝

 Chemical probe를 찾아내기 위해 고분자 공간에서 테스트할 만한 hit 분자를 스캐닝 해야 합니다. 하지만 기존에 쓰고 있는 물리적 스크리닝 방법으로는 거대한 고분자 공간을 계산하기 어려움이 있습니다. 광범위한 화학 공간에서 [관심 있는 단백질과 물리적으로 유용한 상호 관계를 갖는 분자(hits)]를 찾는 방법을 구축해야 합니다. 단백질과 연관 있을 가능성이 있는 분자를 계산적으로 평가할 수 있는 "가상 스크리닝(virtual screening)"이 있습니다. 이를 이용하면 효율적이고 빠르게 소분자를 찾을 수 있고 치료 화합물도 빠르게 알아낼 수 있습니다.

 

 

라이브러리 기반의 물리적 스크리닝과 GCNN 기반의 가상 스크리닝

 이를 위해 DNA-인코딩된 고분자 라이브러리(DNA-encoded small molecule libraries) 기반의 물리적 스크리닝과 GCNN(graph convolutional neural network) 기반의 가상 스크리닝을 이용하여 효과 있는 분자를 찾아내는 기법을 고안했습니다. 라이브러리의 퀄리티와 스크리닝 처리 과정은 좋은 결과물을 도출하는데 중요한 요소입니다.

 물리적 스크리닝 과정에서는 DELs(DNA-encoded small molecule libraries)를 이용하는데 여기서 각 분자는 그 분자에 대한 고유한 바코드로 DNA 파편에 부착됩니다. DEL은 각 분자를 구별하여 한 공간에 있을 수 있게 하는 좋은 방법입니다.

 

① 화학 핸들(ex. NH2)과 함께 고유한 DNA 바코드가 부착된 화학 파편(fragment)들을 만듭니다.

①의 파편들은 다른 화학 핸들(ex. HO)이 부착된 파편들과 합쳐져 다른 리액션들로 분리됩니다. 두 가지의 화학 파편들은 화학 핸들에 반응하여 융합되고, DNA 파편들도 하나의 바코드처럼 보이도록 서로 연결이 됩니다.

 라이브러리가 생성되면 관심 있는 단백질에 같이 혼합해 보면서 결합되는 소분자를 찾아낼 수 있습니다. DNA 파편을 추적하면 원래 어떤 형태의 DEL이 단백질과 상호 작용을 했는지 쉽게 추적 가능합니다. 이 데이터를 기반으로 ML 모델을 만들어 임의로 선택한 소분자가 특정 단백질과 연관 있는 예측 가능합니다. 물리적 스크리닝 시에 남아있던 소분자를 Positive로 두고 나머지 모든 소분자를 Negative로 두고 학습하며, input에 가장 맞는 graph convolutional neural network 이용합니다.

 

하이브리드한 방법의 실험 결과와 논의점

 두 개의 학습 모델(RF, GCNN)과 세 개의 데이터셋(sEH (a hydrolase), ERα (a nuclear receptor), and c-KIT (a kinase))을 이용해봤을 때 GCNN이 더 잘 나왔고 DELs를 쓰지 않은 기존의 virtual screening에 비해 자동화, 다양화, 양적으로나 질적으로 더 좋은 결과가 나왔습니다. 이 분야에 대해서 잘 몰라서 그렇긴 하지만, 일단 기존 시스템과 다르게 하이브리드하게 시스템을 만든 것이 큰 장점인 듯합니다. 굳이 알고리즘을 만드는 것뿐만 아니라 이렇게 다양한 분야에서 도메인에 맞게 AI 시스템을 점점 적용해가는 것도 연구의 중요한 부분이라는 생각이 듭니다. 정말 어려운 주제였습니다.

728x90
728x90

BERT의 소개

 오늘은 공부할 내용은 요즘 state-of-the-art가 된 BERT(Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing)에 대한 것입니다. NLP에서는 다양한 태스크가 있는데 이 태스크를 학습시킬 만큼 사람이 레이블 리한 데이터가 많지 않은 경우가 많습니다. 딥러닝 모델은 데이터가 많을수록 이점이 많은데 이에 따라 데이터가 적은 태스크들은 적절한 성능이 안 나옵니다. 그래서 위키피디아 같은 대량의 레이블이 안된 데이터를 이용하여 generic 하게 학습하고(Pre-training), 학습된 모델에 태스크에 맞는 적은 양의 데이터를 학습시켜 모델을 다시 조정(Fine-tuning) 하게 됩니다.

 

Contextual한 방법들과 Context-free한 방법들

 언어를 표현할 때는 다른 단어들과의 맥락을 고려할 수도 있고(Contextual), 단어 자체에 포커스(Context-free) 할 수도 있습니다. Context-free 모델에는 워드 임베딩 모델들(ex. word2vec, GloVe)이 주로 해당됩니다. Contextual 하게 표현하기 위한 모델을 만들기 위해 다양한 pre-traning 기법들(ex. Semi-supervised Sequence Learning, Generative Pre-training, ELMo, ULMFit) 이 사용됩니다. 하지만 기존의 기법들은 주로 앞에 나오는 문장(단어들)을 가지고 해당 단어를 표현하기 때문에, 해당 단어의 맥락을 표현하는 데 한계가 있습니다. 해당하는 단어를 맥락에 따라 잘 표현하기 위해서는 그래서 앞에 나오는 문장뿐만 아니라 뒤에 나오는 문장도 같이 고려하면 좀 더 정확하게 표현이 될 수 있을 것으로 예상됩니다.(Directional → Bidirectional). 그럼 이런 아이디어를 진작 왜 못했을지 알아보도록 합시다.

 

MLM과 NSP를 이용한 BERT 방법

 Directional 모델들은 단순히 이전 단어들을 기반하여 예측하고자 하는 단어를 간단히 학습을 하면 됩니다. 하지만 bidirectional 모델의 경우에는 각 단어를 이전 단어들과 다음 단어들과 같이 학습을 해야 해서 이전과 같은 단순한 인풋의 형태로는 학습이 안되고, 설사하더라도 예측하고자 하는 단어를 이미 알고 단어를 예측하는 형태로 진행됩니다. 예측인데 예측하는 형태가 아니게 되는 겁니다.
 이런 이슈를 막기 위해서 단어에 mask를 쓰고 학습시킵니다. 이렇게 하면 단순하게 원하는 부분의 단어 예측이 가능합니다. 이를 MLM(Masked Language Model)라 합니다.

Input : The man went to the [MASK1]. He bought a [MASK2] of milk.
Labels : [MASK1] = store, [MASK2] = gallon

 단어들 간의 관계뿐만 아니라 이렇게 하면 문장들 간의 관계도 알아낼 수 있습니다. 이 부분은 NSP(Next Sentence Prediction)라 합니다.

Case1 : Sentence A = The man went to the store , Sentence B= He bought a gallon of milk, Label=IsNext
Case 2 : Sentence A = The man went to the store , Sentence B= Penguins are flightness, Label=NotNext

BERT의 성능과 그에 대한 의견

 SQuAD v1.1과 다른 9개의 NLU(Natural Language Understanding) 태스크에서 적은 데이터를 가지고도 다른 모델들보다 좋은 성능을 냈습니다. BERT로 이미 NLP 도메인에서 pre-training 한 모델이 있다면 따로 학습시키지 않고 fine-tuning만 해도 되는 게 큰 이점이라 할 수 있습니다. BERT는 transformer를 기반으로 한 bidirectional 한 구조에서 mask를 이용하여 인풋과 아웃풋을 단순화시켜서 간단하게 성능이 좋아지는 것이 큰 이점이었던 듯합니다. 무엇보다 이전에 사람이 직접 한 것과 비교하여 뒤처지지 않는 것이 신기하다는 생각이 들었습니다. Transfer learning을 발전시키는 데도 큰 역할을 한 듯합니다. 좀 더 디테일한 내부 구조와 구현 방법에 대해서는 따로 공부를 하고 포스팅해야겠습니다.

 

728x90

+ Recent posts