-
[NLE] NLX-GPT: A Model for Natural Language Explanations in Vision and Vision-Language Tasks 리뷰 1편
이 글은 CVPR 2022에 게재된 NLX-GPT: A Model for Natural Language Explanations in Vision and Vision-Language Tasks 리뷰다.Natural Language Explanation (NLE) 모델은 black box system의 decision making process를 자연어 문장으로 설명하는 것을 목적으로 한다. 이전 explainable 모델이라고 하면 CAM과 같이 특정 예측으로 이끄는 regions이나 tokens을 highlight하는 것에 그쳤지만 NLE는 사람이 더 이해하기 쉽도록 human-friendly, high-level and fine-grained 자연어 문장을 생성해 설명해낸다.이전 NLE의 패러다임은 다..
2022.05.09
-
[내 논문 리뷰] Complete Face Recovery GAN: Unsupervised Joint Face Rotation and De-Occlusion from a Single-View Image
이 글은 WACV 2022에 게재된 논문 Complete Face Recovery GAN: Unsupervised Joint Face Rotation and De-Occlusion from a Single-View Image에 대한 리뷰입니다. 지금은 다른 분야를 연구하고 있어 계속 미뤘는데 제가 쓴 논문에 대한 리뷰는 반드시 해보고 싶었던 것 중 하나입니다. 코드는 다음 repo에 공개되어 있습니다. https://github.com/yeongjoonJu/CFR-GAN GitHub - yeongjoonJu/CFR-GAN: Complete Face Recovery GAN: Unsupervised Joint Face Rotation and De-Occlusion from a Single-View I Com..
2022.04.20
-
[Python, AI] 효율적인 리스트 연산
파이썬에서 리스트는 내부적으로 많은 연산이 정의된 데이터 구조 클래스이다. 딥러닝을 하다보면, 특히 자연어 처리에서 데이터셋 클래스를 구현할 때 리스트 연산을 많이 사용하게 된다. 사전에 초기화 함수에서 모든 리스트를 만들어두는 경우가 많지만 데이터가 엄청 큰 경우 메모리에 전부 적재하기가 쉽지 않다. 또한, RoBERTa와 비슷하게 학습 시에 랜덤하게 데이터 객체를 조작하는 경우, 학습 시에 리스트 연산을 하게 될 수 있다. 그렇지만 대규모 학습은 많은 학습 횟수로 이어지므로 하나의 batch를 얻는데 시간을 줄이는 것은 필수적이다. 동일한 결과를 내놓는 다음 실험의 5가지 변형을 통해 간단하게 조사해보았다. 실험 내용) 고정된 길이의 리스트가 있을 때, 어떤 가변 길이의 리스트의 길이만큼은 1로 채우..
2022.01.19
-
[Pytorch] scatter_add_ 함수 이해
Tensor.scatter_add_ 함수에 대해 이해해보자. parameter는 dim, index (LongTensor), src다. 이 함수의 기능은 dim-axis를 따라 self 텐서의 index에 src를 더해주는 함수다. 원본 문서에서 다음과 같이 좋은 예시를 보여주고 있다. 다음과 같이 src와 index 텐서를 매개변수로 함수를 호출했다고 하자. src = torch.ones((2,5)) # [2x5] index = torch.tensor([[0,1,2,0,0]]) # [1x5] torch.zeros(3,5,dtype=src.dtype).scatter_add_(0,index,src) """ tensor([[1., 0., 0., 1., 1.], [0., 1., 0., 0., 0.], [0.,..
2021.12.03
-
[Ubuntu] Chrome remote desktop 접속 후 키보드 문제 해결
모바일 환경에서 크롬 원격 데스크탑을 통해 Ubuntu PC로 접속하고 난 후 PC로 다시 작업하면, 키보드를 지속해서 누르고 있을 때 키가 한 번만 먹힌다. (나만 그런지는 잘 모르겠다. 하지만 나는 매번 그랬다.) 이 문제를 해결하는 방법은 간단하다. 윈도우 키를 누르고 keyboard를 검색해 keyboard 환경 설정으로 가준다. 저기 보면 Repeat Keys가 있다. 보통 Key presses repeat when key is held down에 체크가 되어있을텐데 이 체크를 해제했다가 다시 체크해주면 재부팅 없이 해당 문제를 해결할 수 있다.
2021.11.30
-
[Dialogue] GPT-2, BART로 대화 생성 모델 설계 구조
GPT2와 BART로 대화 생성 모델을 학습하는 방법에 대해 설명하겠다.여기서 두 화자 간 대화 모델을 가정하고 설명한다. 특히, user의 말에 system이 응답해주는 식이다. 다음 대화를 각 모델이 어떻게 입력으로 받아들이고 어떤 label을 취하는지 살펴보겠다.예시 대화xxxxxxxxxxUser: Hello, I need your help.System: What do you want?User: Can you speak Korean?System: A little bitGPT-2GPT는 autoregressive model이다. 따라서 현재 output이 다음 input token이 된다. 그러나 학습 시에는 한 번에 학습하기 위해 teacher forcing 방식을 사용한다. 따라서 다음과 같은 형..
2021.11.10
-
--cuda_ext was requested, but nvcc was not found 에러 해결
apex를 깔다가 raise RuntimeError("--cuda_ext was requested, but nvcc was not found. 이 에러를 만났다. 찾아보니 conda에서 cudatoolkit을 설치하면 subset으로 깔기 때문에 nvcc를 설치하지 않는게 이유였다. 실제로 cuda를 이용해 GPU를 사용하는 코드는 문제없이 돌아가지만 nvcc는 실행이 되질 않았었다. apt-get으로 설치하면 그래픽 드라이버가 깨져 무한 로그인에 걸릴 수 있으니 조심하자. 그래서 안전하게 nvcc를 추가 설치할 수 있도록 어떤 분이 다음 이슈에 친절하게 답변해주셨다. > .bashrc echo "export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRAR..
2021.09.25
-
[TDS] Multi-WOZ 데이터셋 Delexicalization 코드 분석 (SOLOIST)
SOLOIST 논문에서 사용된 delexicalization 및 기타 전처리 과정을 코드를 통해 살펴본다. 아마 DAMD 전처리 방법과 동일하지 않을까 생각한다. SOLOIST는 Multi-WOZ 2.0 데이터를 기준으로 처리하지만, 아주 약간만 변경해서 2.1 데이터도 처리 가능하다. SOLOIST 논문에 대한 설명은 https://wdprogrammer.tistory.com/84 를 참고하자. 코드 링크는 https://github.com/pengbaolin/soloist 다.create_delex_data.pyxxxxxxxxxxdef main(): print('Create delexicalized dialogues. Get yourself a coffee, this might take a while..
2021.09.08
-
[TDS] MinTL: Minimalist Transfer Learning for Task-Oriented Dialogue Systems의 이해
이 글은 MinTL: Minimalist Transfer Learning for Task-Oriented Dialogue Systems의 방법론 이해를 위한 글이다.Abstract대화 시스템 학습을 위해 데이터를 수집하고 annotation하는 건 시간이 많이 들고 도메인 간 호환도 잘 안 된다. 그래서 human supervision을 줄이기 위해 pre-trained language model을 이용한다. 이전의 TDS는 보통 특정 task에 특화된 여러 모듈로 이루어져있고 그러한 모듈은 pre-training stage를 거의 거치지 않는다. 이렇다보니 pre-trained LM을 다른 대화 tasks에 적응시키기 위해 tasks-specific 아키텍쳐 수정이 필요하다. MinTL (Minimal..
2021.09.07
-
[TDS] A Tailored Pre-Training Model for Task-Oriented Dialog Generation (PRAL)에 대한 이해
이 글은 ACL 2021에 게재된 A Tailored Pre-Training Model for Task-Oriented Dialog Generation (PRAL)의 방법론 이해를 위한 글이다.AbstractMotivation : TDS를 build하는 현재 접근들은 여전히 상당한 양의 annotations을 요구해 노동력을 많이 요구한다. 그래서 더 적은 supervision을 위해 large-scale language models로 대화 시스템을 개발하는 쪽으로 많은 연구들이 있었다. 그러나 LM을 대화 시스템에 적용하기엔 많은 한계점들이 있다.1) 대화 시스템을 위한 LM pre-training은 엄청난 양의 훈련 corpora를 요구하지만 고품질의 다양한 대화 데이터를 얻는 건 항상 어렵다.2) ..
2021.09.05