728x90

언어적인 지침 사항을 액션으로 자동 변경이 필요한 이유

오늘 공부할 내용은 ACL 2020에 출판된 자연어 지침들을 모바일 UI 액션들로 자동적으로 바꿔주는 기법(Grounding Natural Language Instructions to Mobile UI Actions)입니다.

 모바일 디바이스들은 매일의 우리 활동들에 도움을 주는 수많은 기능들을 제공합니다. 그렇지만 사용자들은 이런 기능들(유튜브에서 알람 설정을 하는 등)을 찾거나 접근하기가 쉽지 않습니다. 이런 기능을 사용하기 위해 검색하여 찾아볼 수도 있지만, 여전히 단계별로 지침을 따르고 작은 화면에서 UI적으로 세부적인 사항들을 탐색하는 것은 시간이 걸리고 접근성을 떨어트리는 결과를 가져옵니다. 따라서, 언어적인 지침 사항들을 동작으로 액션들로 바꿔서 사용자 대신 자동으로 실행해 주는 에이전트가 있다면 좋지 않을까라는 점에서 연구는 시작되었습니다.

언어-액션 페어 데이터가 필요성

 사용자들은 복잡한 시퀀스의 액션들이 있는 태스크를 달성하기 위해 지침을 따르게 됩니다. 위와 유사한 상호 작용에 도움을 줄 수 있는 에이전트를 만드는 것은 액션이 수행되는 환경에서 진정한 언어 접지를 필요로 하는 중요한 목표입니다. 여기서 학습하고자 하는 태스크는 <일련의 지침들, 시스템이 한 화면에서 다른 화면으로 전환될 때 만들어지는 화면 시퀀스와 해당 화면의 대화식 요소의 세트>가 제공되는 모바일 플랫폼에 대해 일련의 액션들을 예측하는 것입니다. 이를 위해 end-to-end 모델은 대규모의 언어-액션 페어 데이터가 필요합니다. 하지만 데이터 구하기가 쉽지 않으므로, 두 가지 단계를 이용하여 문제 해결하려 했습니다.

 

두 단계로 된 해결 방법

① 액션 문구 추출 단계(action phrase-extraction step): Transformer with area attention 를 이용하여 다단계의 지침들의 문구들을 연산, 객체 또는 인수로 정의합니다. Area attention은 모델에서 설명의 디코딩을 위해 지침의 인접 단어 그룹간에 집중할 수 있게 해줍니다.

② 접지 단계(grounding step): 추출된 연산이나 객체 설명들을 화면에 있는 UI 객체들과 연결합니다. 여기서도 Transformer를 사용하여 UI 객체들을 문맥적으로 표현하고, 추출되었던 객체의 설명들을 이들과 연관시킵니다.

 

효과성 입증 및 결론

 이 방법의 효과성을 검증하기 위해 3가지 새로운 데이터셋을 만들어서 적용해 보았습니다. 187 다단계의 영어 지침들을 Pixel 폰에 적용하여 성능 측정해 보았습니다. 액션 문구 추출 단계에서 웹에서 찾은 영어 기반의 지침들을 기반으로 문구들을 구분하고 액션들을 설명합니다. 접지 단계를 위해 인공적인 UI 액션 데이터를 만들었습니다(public android UI corpus). 자연어 지침들에서 실행 가능한 액션들을 end-to-end로 매핑하는 도전적인 태스크에도 잘 작동되는 것을 확인할 수 있었습니다. 또한 UI 객체의 방법과 표현법을 GCN이나 feedforward 네트워크로 대체하여 썼을 때 화면의 상황에 따라 객체를 표현할 수 있는 접지 정확도가 향상됨을 알 수 있었습니다.

 두 단계로 나눔으로써, 두 단계 중 하나라도 발전한다면 전반적인 태스크 성능을 개선할 수 있고 수집하기 어려운 언어- 액션 쌍 데이터 세트를 가질 필요성을 완화시키게 됩니다. 이는 UI 세부 정보를 통해 조작하는 피로도를 완화시키는 자동화 기술의 기반을 마련하고, 시각적이나 상황에 따라 장애가 있는 사용자들에게 도움을 줄 수 있을 것이라 예상했습니다.

 지침서가 위에서 말하는 포맷대로 안 써져 있으면 작동이 가능할지 의문이 들었습니다. 그리고 옵셔널 한 부분들이 설명서들에는 들어갈 수 있는데 이에 대해서도 잘 적용이 되는지 궁금했습니다. 이 모바일 디바이스에서는 필요 없는 옵션이면 자동으로 건너뛴다든지 등의 이유로 말입니다. 어떤 설명서들은 중간중간에 단계를 뛰어넘기도 하는데 이에 대한 커버도 잘 될 지도 의문이 들었습니다. 그리고, 영어는 다행히 데이터가 많아서 이 기법이 가능할 것 같은데 다른 나라말들의 성능은 어떨 지도 궁금했습니다. 성능적인 부분을 단순히 설명해서 실제로 시연하는 영상이 보고 싶었습니다. 아직 허들이 많겠지만 실제로 완전 자동화된다면 편할 것 같다는 생각이 들었습니다. 모바일 디바이스 말고도 IoT 같은 시스템에도 자동적으로 적용될 수 있을 듯합니다. 이런 모델을 이용하여 사용자가 어떤 지침에서 어려워하는지 알아서 반대로 설명서를 최적화할 수도 있을 것으로 보입니다.

 

728x90
728x90

Instance segmentation과 Semantic segmentation의 특징

오늘 공부할 내용은 CVPR 2020에 출판된 panoptic-DeepLab을 이용한 전체론적인 장면 이해 개선 방법(Improving Holistic Scene Understanding with Panoptic-DeepLab)입니다. 자율 주행 자동차나 로봇 등의 서비스에서 instance segmentation이나 semantic segmentation 태스크를 하기 위해 컴퓨터 비전 기술이 쓰입니다. Instance segmentation은 개별의 사물을 인식하고 식별자를 부여하는 태스크이고 Semantic segmentation은 이미지에 있는 주변 배경 등을 포함하여 모든 픽셀을 레이블하는 것입니다. 하지만 이는 같은 클래스에 속하는 다른 인스턴스들의 픽셀들을 구분하지 못합니다. 즉, 의자라는 물체를 segmentation한다는 것입니다. 하지만 이게 A 의자인지 B의자인지는 구분을 하지 않습니다. Panoptic segmentation은 이 두 가지 방법을 합쳐서 각 픽셀에 의미적인 레이블과 인스턴스 ID를 기반으로 인코딩된 단일한 값을 부여하는 것을 목표로 합니다.

기존의 segmentation 방법의 한계

기존 연구는 Mask R-CNN을 기반으로하는데 instance segmentation과 semantic segmentation을 따로 진행합니다. Instance segmentation에서는 인스턴스들끼리 겹치는 경우가 생기는데, 이를 해결하기 위해 더 좋은 신뢰도의 마스크를 따른다던가 미리 정의된 카테고리 간의 관계를 기반으로 결정하는 등 휴리스틱한 방법을 씁니다. 또한, Semantic segmentation과 instance segmentation 간에 결과가 다를 수도 있다는 문제점과 실시간 애플리케이션에 적용하기에는 처리 속도가 따라가지 않는다는 문제점이 여전히 존재합니다. 따라서 이런 실시간성 panoptic segmentation에 필요해졌습니다.

Panoptic segmentation 방법 고안

본 연구에서는 DeepLab이라는 보편적으로 쓰이는 의미적 segmentation 방법에 적은 수의 파라미터와 미미한 계산 오버 헤드만을 추가하여 panoptic segmentation을 할 수 있는 방법을 고안했습니다. 제안된 기법에서는 추가되는 방법 없이 semantic과 instance segmentation이 오버랩되지 않게 동시에 처리 가능하고, semantic과 instance segmentation의 결과를 합치는 효율적인 operation을 만들어서 실시간으로 enc-to-end panoptic semgentation이 가능하도록 합니다. 본 기법에서는 바운딩 박스를 만들어 내지 않을 뿐 아니라 세 가지의 loss function만을 요하여 이전 기법에 비해 뛰어난 성능을 보입니다.

제안하는 Panoptic-DeepLab은 다음과 같은 세 가지 출력을 통해 물체를 인지합니다.
①-1. Semantic segmentation을 이용해 semantic 클래스 구합니다. 그러나 만약 같은 종류의 사물이 겹쳐져 있다면 각 사물 인스턴스에 대해서는 구분해주지 않습니다.
①-2. 이를 해결하기 위해 각 인스턴스의 중심점을 예측하면서 인스턴스 중심 regression을 통해 연관되는 인스턴스 픽셀들을 추출합니다.
②. ①-2의 regression된 임의의 한 인스턴스 픽셀들과 예측된 중심점을 그룹핑하여 instance segmentation이 진행됩니다.
③. ①-1 의 semantic segmentation에서 나온 결과와 ②에서 최종적으로 나오는 instance segmentation을 합쳐서 대다수 동의 기반으로 마지막 panoptic segmentation 결과를 도출해냅니다.

제안된 스킴 NN 디자인은 4가지 컴포넌트로 구성됩니다.
1. 인코더 backbone은 ImageNet에서 미리 학습합니다. Semantic segmentation과 instance segmentation에 모두 적용합니다. ImageNet을 선학습시킨 후에 feature map을 도출하고 각 segmentation 브랜치에 공유합니다. Feature map은 기본 Convolution을 기반으로 생성하면 결과가 해상도가 떨어지고 거칠어지기 때문에 대신 atrous convolution 을 쓰게 됩니다.
2. 다양한 공간 스케일에서 정보를 얻을 수 있게 segmentation을 진행하기 위해 ASPP 모듈들을 각 브랜치에 독립적으로 배치합니다.
3. 각 segmentation 태스크 별로 특화된 디코더 모듈을 적용합니다. 디코더는 DeepLab을 기반으로 두 가지를 수정하여 적용합니다. 추가적인 Low-레벨의 feature map을 디코더에 적용하여 공간적인 정보를 유지하여(물체의 경계선 같은) 결과 feature map의 성능이 많이 떨어지지 않도록 합니다. 5 × 5 depthwise-separable convolution를 디코더에 적용하여 더 나은 성능 결과가 나오도록 합니다.
4. 태스크별로 특화된 예측 헤드 배치를 합니다. Semantic segmentation은 작은 스케일의 물체의 segmentation에 더 효과적인 각 픽셀별로 웨이트를 다르게 주는 standard bootstrapped cross entropy loss function 적용합니다. Instance segmentation은 사전 지식 없이 물체 인스턴스의 중심과 주변 픽셀 사이의 오프셋(편차)을 예측하도록 학습됩니다.

panoptic segmentation의 성능 결과에서 생각할 점

세 가지 데이터셋을 통해서 실험하고, semantic, instance, panoptic segmentation 모두에서 좋은 결과를 얻었습니다. 결론적으로, 바운드박스 없는 panoptic segmentation에서 새로운 state-of-the-art가 되었습니다. Semantic segmentation과 instance segmentation이 개념적으로 보면 굉장히 비슷해서 그냥 하나에 approach로 바로 할 수 있을 것 같은데 안 되는 이유는 무엇일지 좀 더 생각해 봐야 되겠습니다. 또한, 실시간성에 강하다고 했는데, 실제로 자율 주행하는 차의 데이터를 기반으로 해보면 어떤 결과가 나올지도 궁금해졌습니다.

728x90
728x90

기존 모델의 다국적 언어를 지원하기 위한 한계

오늘 공부할 것은 언어에 구애받지 않는 BERT 기반 문장 임베딩(Language-Agnostic BERT Sentence Embedding)에 대한 내용입니다. 다국어 임베딩 모델은 같은 임베딩 공간에 다른 언어들을 인코딩시키기에 강력한 도구입니다. 이는 텍스트 분류, 클러스터링 또는 언어 이해 등 다양한 태스크에 쓰일 수 있습니다.
이전 방법론들은(LASER나 m~USE) 서로 다른 언어들 간의 문장 임베딩 일관성을 향상시키기 위해 한 문장에서 다른 언어의 한 문장으로 매핑시키는 방법을 씁니다. 이들은 밀접하게 연관된 표현들을 얻기 위해 번역 쌍을 학습 데이터로 쓰는 번역 순위 태스크(translation ranking tasks)같은 곳에 적용될 때 종종 연관된 이중 언어 모델(en-xx)에 비해 고자원의 언어(en)에서 성능이 안 좋아집니다. 모델 케파의 한계와 저자원 언어의 질나쁜 학습 데이터 때문에, 좋은 성능으로 수많은 언어들을 지원하도록 다국어 모델을 확장시키기가 어렵습니다.

MLM pre-training의 제안과 여전한 한계

언어 모델을 개선하기 위해서 MLM pre-training 기법들(BERT, ALBERT, RoBERTa)이 제안되었습니다. 이는 단일 언어 텍스트만 필요하기 때문에 다양한 언어들과 다양한 언어 처리 태스크에서 좋은 성능을 냈습니다. 또한, MLM pre-taining은 MLM 학습에 연결된 번역 쌍을 포함하거나(translation language modeling (TLM)) 단순하게 여러 언어들의 사전 학습 데이터를 도입하여 다국어 환경으로 확장할 수 있었습니다. 이런 MLM이나 TLM 학습으로 학습된 표현법들은 (문장 단위에 목표가 아닌)태스크에 맞게 fine-tuning하는데 도움이 되었지만 번역 태스크에 중요한 문장 임베딩을 바로 만들 수는 없다는 한계점이 있었습니다.
이전 연구에서, 번역 순위 태스크를 이용해 다국어 문장 임베딩 공간을 학습하여, 주어진 소스 언어 문장에서 타겟 언어들의 문장 모음에 대해 (잘 된 것에 따라)순위를 매기는 방식입니다. 이는 공유하는 트랜스포머 인코더를 가지는 듀얼 인코더 구조가 되는데 이는 다중 병렬 텍스트 검색 태스크에서 좋은 성능을 내게 되었습니다. 그러나, 이 모델은 모델의 용량, 어휘의 범위, 학습 데이터 퀄리티 등으로 인해 이중 언어 모델이 여러언어를 지원하도록 확장할 때 문제가 생겼습니다.

다국어 BERT 임베딩 모델

본 연구에서는 LaBSE라는 다국어 BERT 임베딩 모델을 만들었습니다. 이는 109개의 언어들에 대해 언어에 구애받지 않는 교차 언어 문장 임베딩 생성을 만드는 데 도움이됩니다.

기본적으로 듀얼 인코더 구조로 소스와 타겟 문서는 공유된 임베딩 네트워크에 각각 인코딩됩니다. 번역 순위 태스크가 적용되면 서로를 의역하는 텍스트들은 비슷한 표현법들을 가지도록 만듭니다. 트랜스포머 임베딩 네트워크는 MLM이나 TSM 태스크에 의해 학습된 BERT 체크포인트에 의해 초기화됩니다. 모델은 MLM및 TLM 사전 학습을 사용하여 170억개의 단일 언어 문장과 60억개의 이중 문장 쌍으로 학습을 하였고, 학습 때 데이터가 없었던 저자원의 언어에서도 효과적인 성능을 보였습니다.

텍스트 검색 테스크 실험 및 결과 분석

다국어 텍스트 검색 태스크에 대해서 Tatoeba corpus를 이용해 실험하였습니다. 30개의 언어가 학습데이터에 해당 언어가 존재하지 않았습니다. 모델은 주어진 문장에 대해 consine distance를 계산하여 비슷한 문장을 알아냅니다. 기존 benchmark들이 커버했던 것에 따라 그룹을 4가지(14개, 36개, 86개, 전체(112개))로 나누었습니다. 많이 커버하는 14개의 언어들에 대해서는 m~USE 와 LASER, LaBSE 모두 좋은 결과를 냈습니다. 커버하는 언어가 많아질수록 정확도는 낮아졌지만 LaBSE가 더 완만하게 낮아졌습니다. m~USE는 14개 이상 커버가 안 되는 것을 확인할 수 있었습니다. 30개 이상의 학습 데이터에 없는 언어들에도 적용 가능하다는 것을 확인하였습니다.

Model 14 36 82 All
m~USE (transformer ver) 93.9 - - -
LASER 95.3 84.4 75.9 65.5
LaBSE 95.3 95.0 87.3 83.7

본 연구는 웹 스케일의 병렬적 텍스트에 대해 마이닝 하는 데도 쓰일 수 있다고 합니다. 본 연구에서는 병렬적 텍스트 추출을 위해 대규모 코퍼스인 CommonCrawl에 LaBSE를 적용하여 엄청난 양의 중국어와 독일어 문장을 처리합니다. 각 중국어와 독일어 문장 쌍은 LaBSE모델을 기반으로 인코딩되고 인코딩된 임베딩은 인코딩된 77억개의 영어 문장들 중에서 잠재적인 번역 후보를 찼아 대략적으로 가까운 문장을 찾는 알고리즘을 통해 고차원의 문장 임베딩에서 비교적 빨리 찾을 수 있습니다. 이를 통해 많은 수의 영어-중국어, 영어-독일어 잠재 번역 후보들을 찾을 수 있었습니다. 이는 고품질의 병렬 데이터로 훈련된 현재의 최고 모델과 크게 차이나지 않았습니다.

728x90
728x90

댓글에서 SmartReply의 쓰임새

 오늘 공부할 것은 유튜브 크리에이터를 위한 SmartReply 기법(SmartReply for YouTube Creators)에 대한 내용입니다.

SmartReply란 자동화된 답장 제안하는 기능으로 지메일에서부터 안드로이드 메세지, 구글 플레이까지 다양한 방면에서 쓰이고 있습니다. 각 태스크 요구사항들은 다르므로 SmartReply를 태스크에 맞게 모델링하고 서비스 제공해야 합니다. 이번에는 유튜브에 SmartReply를 도입하여 크리에이터들이 그들의 시청자와 쉽게 소통할 수 있도록 하였습니다. 크리에이터들은 동영상에 대해 대규모의 댓글을 받고, 크리에이터와 시청자의 커뮤니티는 컨텐츠에 따라 다양합니다. 또한 이메일과 달리 유튜브 댓글에 욕을 쓴다던가, 유행어를 쓴다던가, 줄임말을 쓰거나, 이모티콘을 같이 쓰는 등의 보다 복잡한 언어적 패턴을 보입니다.

 

SmartReply가 개선한 방면

 이메일에서는 단어 단위로 RNN을 이용하여 인코딩하고, 그리고 다른 단어레벨의 RNN을 이용하여 가능성 있는 응답을 디코딩했습니다. 하지만 이 방법은 계산 비용이 컸습니다. 가장 적절한 응답을 위해 사전 정의된 제안 목록을 검색하는 시스템을 설계하여 계산 비용은 적게 들며 이전 기법과 비슷한 성능이 나오도록 하는 것이 중요한 연구 목표였습니다.

 이 시스템은 댓글과 그것에 대한 제안 답글을 독립적으로 인코딩하였습니다.

1. 텍스트에서 단어와 짧은 구절을 추출하기 위해 언어 식별, 정규화 및 토큰화 등의 과정을 포함한 전처리했습니다.

2. 두 신경망들을 이용하여 댓글과 제안 답글을 동시에 독립적으로 인코딩했습니다.

3. 제안 답글을 사전 계산한 다음 효율적인 maximum inner product search 구조를 사용하여 제안들의 세트들을 검색합니다.

 이 방법은 지메일을 넘어선 다양한 태스크에 SmartRely를 적용하는 기반이 될 수 있습니다. 하지만, 이 시스템은 제한된 언어와 적은 분야에 맞춰진 단어 레벨의 전처리 기반으로 이모티콘이나 기호 등으의 여러 (이종) 표현들로 이루어진 유튜브 댓글에서는 문제가 생길 수 있었습니다. 

 

 문자 바이트를 기반의 SmartReply 모델

 이를 해결하기 위해, 계산적으로 효율적으로 확장된 Self-Attention 네트워크를 통해 댓글과 답글을 학습하고, 첫번째 언어 및 문자 바이트를 기반으로 SmartReply 모델 만들었습니다.

 전처리 없이 텍스트 인코딩하는 방법을 택하고 단어 기반의 모델과 경쟁력 있는 트랜스포머 구조 기반의 연구를 기반으로 하였습니다. 이는 입력되는 일련의 문자들이나 바이트들로 단어나 구절로 모델링할 수 있게 하였습니다. 이 방법은 이모티콘이나 오탈자가 있는 댓글에 대응을 할 수 있었지만, 문자 시퀀스가 너무 길어서 Self-attention 레이어 계산시에 비용이 많이 든다는 단점이 있었습니다. 이의 해결을 위해 WaveNet 과 같은 각 네트워크 레이어에 임시적인 축소 레이어를 적용하여 시퀀스의 길이를 줄였습니다. 이는 결과의 질과 계산 비용 사이에서 적절히 성능 조절할 수 있게 하였습니다.

 

구체적으로, 대조적인 목표로 네트워크를 훈련시켜 댓글과 답글의 잠재 표현들 사이의 상호 정보를 극대화하기 위해 두 개의 인코더 네트워크를 이용하여 댓글과 답글을 인코딩하였습니다.

1. 임베딩된 일련의 바이트를 구성하여 트랜스포머 레이어로 들어갑니다.

2. 각 후속 레이어는 동일한 비율로 문자들을 삭제하며 이는 문자 시퀀스의 길이가 크게 줄어들어 계산의 복잡성이 줄어듭니다.

3. 인코딩된 댓글과 답글은 상호 유사성을 극대화합니다.

 

 여러 언어로 쓰인 댓글이나 이모티콘이나 숫자와 같은 것들을 학습하고 지원하기 위해서 언어를 넘나드는 단일 모델을 만들었고 단일 모델을 만드므로서 유지 관리나 업데이트가 단순화되었다고 합니다.

영어와 스페인어 기반의  SmartReply을 제공함

 일단 영어와 스페인어를 기반으로 서비스 제공한다고 합니다. 모델에 의해 생성된 다국적 언어의 제안 세트를 보면 언어에 상관없이 모델이 적절한 응답끼리 잘 묶어주는 것을 알 수 있습니다.

 이렇게 생활에 밀접한 부분까지 딥러닝이 직접 적용되고 있는 것을 보면 신기하다는 생각이 듭니다. 결국 자주 쓰는 문장을 추천해주는 시스템인 것 같은데, 구독자 입장에서는 크리에이터가 다른 구독자와 비슷하게 자신의 댓글에 달면 좋아할까라는 생각이 듭니다. 유튜브의 핵심은 상호 작용이라는 생각이 드는데 구독자들이 기계적으로 답글이 달린다고 생각하면 어떻게 할 지도 고민해야 할 듯 합니다. 그렇다면 좀 더 나아가서 댓글을 남긴 사람의 특성에 따라 댓글을 추천해준다면 크리에이터들에게 더 도움이 되지 않을까라는 생각이 듭니다.

 챗봇시스템에 유용하게 쓰이겠다는 생각이 들었습니다. 물론 이 분야에서는 더 고도화된 알고리즘이 있을 수도 있지만 말 입니다. 또한, 어떤 것을 학습 데이터로 이용할지 의문이 들었습니다. 유튜브에 있는 모든 댓글과 답글을 이용해서 학습하면 유튜브나 구독자들의 성향에 맞지 않는 경우가 생길 것이고, 그렇다고 개개인별로 하자니 너무 학습 데이터가 적어서 제대로 된 결과가 안 나올 것 같았습니다.

728x90

+ Recent posts