728x90

손가락 힘 기반의 제스처 센싱

 오늘은 픽셀 4에서 손가락 힘 기반의 제스처 센싱(Sensing Force-Based Gestures on the Pixel 4)에 대한 내용이다. 터치 입력은 두드리거나 스와이프 하는 등의 모션 외에 길게 누르는 방법이 있습니다. 길게 누르는 방법은 사용자가 꽤 오랜 시간(시간 임곗값만큼) 동안 누르고 있어야 합니다. 이런 방법은 시스템과 사용자 간의 즉각적인 상호작용을 하는 데 한계가 생깁니다. 디바이스에서 누르는 위치뿐만 아니라 손가락의 누르는 힘도 입력을 받을 수 있기 때문입니다. 손가락 힘을 센싱 하기 위해서 하드웨어 센서에 종속되는 경우가 많습니다. 하드웨어가 충족되더라도, 손가락 입력 시 사용자가 힘을 미세하게 조절하기 힘들므로 몇 개의 레벨로만 나누어서 입력을 받아들이는 경우가 많아서 하드웨어 센서를 유용하게 사용 못 하게 되는 결과를 낳습니다.

 

 Pixel4에서의 제스처 분류 학습

 Pixel4에서는 더 많은 터치 상호작용을 할 수 있도록 손가락 힘 기반의 제스처 센싱 기법을 고안하였습니다. 사용자가 터치 센서들과의 상호작용을 어떻게 하는지 분석한 후 길게 누르는 상호작용을 좀 더 자연스럽게 할 수 있도록 지원해 주었습니다.

 일단 터치 센서는 두 가지의 전도성 전극으로 구성됩니다. 구동(drive) 전극과 센싱 전극(sense)라고 불립니다. 두 전극은 유리와 같은 비전도성 유전체를 중간에 두고 떨어져 있다는 특징이 있습니다. 두 전극은 셀(tiny capacitor)을 만들어 어느 정도의 전하를 갖고 있습니다. 만약 손과 같은 전도성 물체가 다가간다면 전하를 뺏기게 되고, 정전 용량이 줄어듦을 알 수 있습니다. 따라서, 뺏긴 전하의 양은 손가락과 전극들 사이의 거리에 반비례하게 됩니다.

 셀들은 디바이스의 화면에 매트릭스로서 표현될 수 있습니다. (물론 디스플레이의 픽셀보다는 한 칸의 크기가 큽니다.) 이 표시되는 매트릭스들을 레코딩합니다. 손가락을 닿는 부분을 최대한 중심으로 만들고 손가락 주변부에 대해서는 다르게 반응하기 위해, 터치 센서는 손가락 힘이 변하는 것에 초점을 두지 않고, 디스플레이와의 거리에 대해서 좀 더 민감하게 반응하게 합니다.

 만약 사용자가 화면을 누른다면 화면에 닿이는 손가락의 면적이 넓어지는데, 면적이 넓어지면서 달라지는 두 가지 속성을 알 수 있습니다. 초기 접촉점을 중심으로 비대칭적으로 닿이는 부분이 변화한다는 것과 닿이는 중심점이 손가락의 축을 따라 이동한다는 것입니다. 이를 통해 초기 매트릭스와 손가락 힘을 준 후 변화하는 매트릭스를 통해 접촉 모양의 변화를 감지 가능합니다.

 사용자의 손가락 모양이나 화면의 각도에 따라 닿이는 면적이 달라질 수 있습니다. 사용자마다 접촉 모양 변화는 다를 수 있으므로 ML을 이용하여 압력 제스처 분류 학습합니다.

 사용자에게 터치 후 즉각적인 정보 제공을 위해서 분류는 실시간성을 띄어야 하고 손가락 힘이 정점일 때 빠르게 상호작용을 해줘야 합니다. CNN을 이용하여 공간적인 특성을 뽑아내고 RNN을 이용하여 시간적인 특성을 뽑아내고 RNN이 프레임별로 처리되어 실시간성 경험에 기여합니다. 온디바이스 추론을 위해 추론 구조 단순화하였다고 합니다. 압력 제스처와 4가지의 터치 제스처를 학습하고 제대로 구별되기 위해 loss function도 구성하였습니다.

 

 제스처의 UX와의 비교 및 논의해야할 점

 기존의 오랜 시간 터치와 제안한 압력 제스처의 UX 비교해 보았을 때 압력 제스처가 사용자가 터치 시에 출력되는 결과와 연결이 더 잘 되는 결과를 낳았습니다. API를 제공하므로 아무나 도입 가능하다고 합니다.
 뭔가 용두사미가 된 느낌이 있는데, 새로운 터치 기법을 추가된 것이 새로운 점인 것 같습니다. 지금 실험이 픽셀 4에서 하나의 예시만 들어서 다른 환경(디바이스)에서 다른 예시가 좀 더 필요하다고 생각합니다. 매트릭스를 잘 만들고 ML 기법도 도입하였는데 압력 제스처 하나만 알아내는 것에만 쓰이는 게 조금 아깝다는 생각이 들어서 혹시 다른 터치 관련된 문제에 도입할 수는 없을지 생각해 봐야 할 것 같습니다. 마지막으로, 하드웨어랑 소프트웨어가 결합된 문제여서 신기했습니다. 다만, 성능에 대한 결과 비교가 더 필요하고 상용화가 실제로 되었을 때 어떤 문제점이 있는지에 대한 논의도 좀 더 되어야 할 것으로 보입니다.

728x90
728x90

NLP 분야의 모델 소개와 한계점

NLP 분야에서 state-of-the-art의 방법의 하나인 텍스트-텍스트 전이 트랜스포머(Exploring Transfer Learning with T5: the Text-To-Text Transfer Transformer)에 대한 내용입니다. 최근 NLP 태스크에서 전이학습이 유용하게 쓰입니다.

전이학습은 레이블 되어 있지 않은 풍부한 텍스트 데이터에서 self-supervised 태스크(언어 모델링이나 누락된 단어 채우기)를 미리 학습하여(Pre-training) 모델을 만듭니다. 그리고 적은 레이블된 텍스트 데이터를 이용하여 모델을 튜닝(fine-tuning)합니다. NLP 기반의 전이학습 방법은 지속적으로 나오고 있는데( GPT, ULMFiT, ELMo, BERT, XLNet, RoBERTa, ALBERT, Reformer, MT-DNN) 이 분야에서는 어떤 개선 사항이 중요하고, 얼마나 효과가 있는지에 대해 평가하기가 힘듭니다.
기존 BERT 기반의 모델들은 태스크 별로 출력 형태가 다르게 되어 있습니다. 기존 데이터셋에는 퀄리티 이슈나 데이터의 다양성에 대한 이슈가 존재합니다.

통합된 텍스트 입력-텍스트 출력으로 NLP 태스크를 처리하는 T5

전이 학습 방법들의 효과에 대한 대규모의 실증적인 조사를 하고, 이 결과를 반영하여 T5(the Text-To-Text Transfer Transformer)라는 새로운 모델을 구축했습니다.

T5는 BERT 기반의 모델들(출력값이 클래스명이거나 입력값의 일부)과 달리 통합된 텍스트 입력-텍스트 출력으로 NLP 태스크를 처리됩니다. 이러한 특성으로 어떤 NLP 태스크에 대해서도 같은 모델, loss 함수, 그리고 하이퍼파라미터를 쓸 수 있습니다.
지난 NLP 전이 학습 기반의 방법들을 조사해본 결과 다음과 같은 인사이트들을 얻을 수 있었습니다.
1. 모델의 구조 방면에서, "인코더-디코더" 모델이 "디코더만" 사용하는 모델보다 결과가 좋습니다.
2. 사전 학습 목표의 방면에서, 누락된 빈칸 채우기 목표가 가장 좋은 결과를 가져왔고 계산 비용이 가장 중요한 요소였습니다.
3. 레이블되지 않은 데이터셋 방면에서, 같은 도메인 내의 데이터에서 학습하는 것은 효과가 좋지만 적은 데이터셋을 이용하여 사전 학습을 하는 것은 과적합을 초래했습니다.
4. 학습 전략 방면에서, 멀티 태스크 학습 방법이 사전 학습 후 튜닝 방법과 견주어볼만했습니다.. 하지만, 각 태스크에 대해 모델이 얼마나 자주 학습해야 할 자기가고려돼야 한다는 것입니다.

5. 그 외에도 스케일 방면에서, 고정된 계산 능력치에서 모델 쿠기, 학습 시간 등을 비교해 보았습니다.(더 자세한 사항은 페이퍼 참고)

그리고 미리 학습(pre-training) 하는 데 도움이 될 수 있도록 새로운 오픈소스형 데이터 셋 Colossal Clean Crawled Corpus (C4)를 만들었습니다. 기존 데이터 셋 이슈 해결을 위해 C4라는 퀄리티, 다양성, 방대함을 모두 만족시키는 데이터 셋을 구축하였습니다. Common Crawl 을 기반으로 데이터를 좋은 퀄리티로 정제했습니다.

Q&A와 빈칸에 텍스트 채우기 태스크에 대한 실험 결과와 궁금점

C4 데이터셋과 T5 모델을 결합한 결과 다양한 태스크에 도입될 수 있고 현재까지 나온 모델들과 비교하여도 성능이 뛰어남을 보였습니다. 이 포스팅에서는 두 가지 태스크에 대해 예시를 들었습니다.
1. 외부 참고자료없이 Q&A(Closed-Book Question Answering) - SQuAD 데이터셋 이용하기: Pre-training 때 배운 파라미터에 저장된 지식만을 가지고 답해야 하는 태스크입니다.
중간중간 단어들에 대해 마스크(M)를 씌우고 그 마스크 씌우 곳에 들어갈 단어들이 출력값으로 나오도록 Pre-training 합니다.

"President Franklin <M> born <M> January 1882." <-> T5 <-> "D. Roosevelt was <M> in"

Fine-tuning시에는 따로 지식 학습 없이 Q&A 가능합니다.

"When was Franklin D.Roosevelt born?"->T5-> 1882

결과적으로 34.5%~50.1% 정도의 정확도 결과를 보였습니다.

2. 빈칸에 텍스트 채우기 : 이 태스크에서는 사용자가 요청하는 수에 맞춰서 알맞은 단어들을 생성합니다. Pre-training은 위와 비슷하게 하고, fine-tuning시에 다음과 같이 태스크에 맞게 학습합니다. 빈칸 대신 숫자로 채웠습니다.
따라서 모델 입력값이 다음과 같다면

I like to eat peanut butter and _4_ sandwiches

출력값은

jelly, which is what makes good

이 나올 수 있도록 학습했다는 것입니다.

자세한 T5 구현 방법을 보려면 페이퍼 참고하시면 됩니다. 태스크를 넘나들어서 적용할 수 있다는 아이디어가 놀라웠고 입력과 출력의 포맷에서 자유로울 수 있는 점이 가장 장점인 것 같습니다. 어디까지 적용할 수 있을 지도 상상해 봐야겠습니다. 결국에는 Pre-training의 데이터 셋이 얼마나 잘 구성되어 있고 지식이 얼마나 많은 지에 따라 성능이 크게 차이 날 것 같습니다. 한국어로 이런 데이터 셋을 모을 수 있을지 궁금증이 생깁니다.

728x90

'NLP' 카테고리의 다른 글

PEGASUS, 추상적인 텍스트 요약 모델  (0) 2020.06.10

+ Recent posts