이번 포스팅은 Self-Supervised Learning에 대해 알아보고 Self-Supervised Learning (자기 지도 학습)에 대한 논문을 읽고 리뷰를 해보도록 하겠습니다.

 

Self-Supervised Learning (자기 지도 학습)을 알아보기 위해 먼저 학습의 종류부터 간단하게 알아보도록 하겠습니다.

 

학습의 종류에는 Supervised Learning(지도 학습), Unsupervised Learning (비지도 학습), Self-Supervised Learning(자기 지도 학습), Semi-Supervised Learning(준지도 학습)이 있습니다.

 

Supervised Learning(지도 학습) 

지도 학습은 모든 데이터에 레이블을 달아 그 데이터를 이용하여 모델을 학습시켜 답을 예측하게 하는 모델입니다.

 

레이블링(각 데이터마다 학습시켜 놓은 답)이 되어있는 데이터셋(Data Set)을 가지고 모델을 학습시킵니다.

 

이것은 수많은 데이터에 레이블을 전부 달아야 한다는 점에서 데이터셋을 모으기 어렵다는 단점이 있습니다.

 

이러한 지도 학습의 단점을 극복하기 위해 나온 모델이 Unsupervised Learning (비지도 학습), Self-Supervised Learning(자기 지도 학습), Semi-Supervised Learning(준지도 학습)입니다.

 

Unsupervised Learning (비지도 학습)

비지도 학습은 레이블링이 되어있지 않아 모델 스스로 학습한다는 특징이 있습니다.

 

비지도 학습의 대표적인 예로는 클러스터링 Unsupervised Learning이 있습니다.

 

Self-Supervised Learning(자기 지도 학습)

인간의 관리 없이 컴퓨터 알고리즘을 훈련시키기 위해 자유롭게 사용할 수 있는 텍스트, 이미지 콘텐츠를 활용할 수 있는 방법을 제시하는 모델입니다.

 

레이블링 되어있지 않은 데이터들을 이용해 모델 스스로 레이블링 되게 하는 것을 말합니다.

 

입력 데이터의 한 부분이 다른 부분의 Supervision 역할을 하게 되는 것입니다.

 

즉, 다량의 레이블이 없는 원 데이터로부터 데이터 부분들의 관계를 통해 라벨을 자동으로 생성하여 지도 학습에 이용하는 비지도 학습기법입니다.

 

자기 지도 학습을 통해 웹이나 클라우드에 존재하는 많은 비디오, 이미지, 텍스트 데이터들을 모아 별도의 레이블링 없이 학습이 가능하기 때문에 새로운 데이터 셋을 구축하는 비용과 시간을 줄일 수 있습니다.

 

자기 지도 학습을 통해 이전에 있는 것을 이용해 다음을 예측하고, 눈에 보이는 부분을 이용해 보이지 않는 부분을 추측할 수 있습니다.

 

Semi-Supervised Learning(준지도 학습)

 레이블링이 된 데이터가 충분하지 않을 때 레이블이 없는 데이터를 이용하여 학습하는 모델입니다.

 

즉, 레이블이 없는 데이터를 이용하여 지도 학습의 성능을 끌어올립니다.

 

분류된 데이터와 분류되지 않은 데이터가 모두 포함된 학습 데이터셋입니다.

 

이 방법은 데이터로부터 관련 특성을 도출해내기 어려울 때와 분류된 데이터 예시들이 전문가들에게 시간이 많이 걸리는 작업일 때에 특히 유용합니다.

 

Self-Supervised Learning(SSL)의 학습방법

Image Inpainting (이미지 인페인팅) 기법

이미지 인페인팅이란 영상에서 훼손된 부분을 복원하거나 영상 내의 불필요한 문자나 특정 물체를 제거한 후 삭제된 영역을 자연스럽게 채우기 위해 널리 사용되는 기법입니다.

 

이미지 인페인팅 기법 중 하나인 Context Encoder을 설명드리기 전에 CNN기반 이미지 합성을 설명드리겠습니다.

 

CNN(Convolutional Neural Network) 기반 이미지 합성

CNN이란 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로 데이터에서 이미지를 직접 학습하고 패턴을 사용해 이미지를 분류합니다.

 

CNN 기반 이미지 합성은 좋은 성능이지만 매우 작고 얇은 mask에만 잘 적용되고, 계산량이 많다는 단점이 있습니다.

 

Context Encoder(맥락 인코더)

Context Encoder는 CNN 기반에서 확장한 방식으로 작은 mask에만 적용 가능하다는 단점을 극복해 큰 mask에도 적용 가능합니다.

 

이미지의 Context를 컨볼루션을 거쳐 나온 중간 결과를 캡처하는 인코더와 누락된 이미지의 콘텐츠를 생성하기 위한 디코더로 구성됩니다.

 

Context Encoder는 GAN 기반이며 이미지에 비어있는 부분을 추측하고 복원하는 방법으로, 누락된 영역을 채움과 동시에 주어진 맥락과 일관성을 유지합니다.

 

GAN (Generative Adversarial Networks) 기반 자기 지도 학습

GAN은 생성자와 식별자가 서로 대립하여 서로의 성능을 점차 개선해 나가는 것입니다.

 

- 생성자: 노이즈 분포로부터 실제와 가까운 데이터를 생성해 내는 역할

- 판별자: 입력으로 받은 데이터가 진짜인지 가짜 데이터인지 구분하는 역할

 

StyleGAN

StyleGAN은 PGGAN, Progressive Growing GAN을 이용한 고해상도 이미지를 생성하고, AdaIn을 이용해 각 층에 이미지의 Style을 캡처한다는 두 가지 특징이 있습니다.

 

PGGAN(Progressive Growing GAN)

PGGAN은 Progressive Growing을 이용해 저해상도 이미지의 생성으로 시작해 점차 고해상도용의 생성자와 판별자를 추가함으로써 고해상도 이미지를 생성하는 방법입니다.

여기서 생성자와 판별자의 파라미터는 고정하지 않고 학습을 계속하는 것입니다.

 

AdaIN(Adaptive Instance Normalization)

AdaIN(Adaptive Instance Normalization)은 스타 일변 환용의 정규화 방법이다. AdaIn의 특징은 스타일과 콘텐츠 이미지의 총합량만 정규화하고, 학습 파라미터를 사용하지 않는다는 점입니다. 이에 따라 훈련 데이터에서 본 적 없는 스타일이라도 스타일 변환이 가능해졌습니다.

 

StyleGAN은 단일 생성자와 판별자를 사용하여 도메인 레이블을 사용한 학습을 기반으로 입력 이미지를 원하는 대상 도메인으로 유연하게 변환합니다.

 

StyleGAN 구성

StyleGAN 구성은 먼저 Progressive Growing을 사용하여 각 Generator에서 단계적으로 해상도를 올립니다.

PG-GAN과 같이 확률적으로 생성한 잠재적 변수로부터 이미지를 생성하지 않고, 고정 값으로 이미지를 생성합니다.

확률적으로 생성된 잠재 변수는 Style벡터가 되어, 각 해상도에서 AdaIN을 통해 입력됩니다.

 

이러한 기술은 Self-Supervised Learning을 이용한 기술로, 생성되는 아웃풋에 대해 더 잘 이해할 수 있게 할 뿐 아니라 이전에 (다른 모델들로) 생성된 이미지들보다 더 진짜 같아 보이는 고해상도의 이미지를 만들어냅니다.

 

이러한 기술들을 응용하여 보이지 않는 부분을 추측할 수 있으며 상식화 할 수 있을 것입니다.

즉, 어떤 데이터에 계속적으로 입력되는 이미지를 통해 이미지의 특징을 파악할 수 있을 것입니다.

 

이러한 기술을 이용한 응용분야는 자율주행 자동차, CCTV 분석(보이지 않는 부분 추측, 저해상도 → 고해상도), 가상 스타일링 확인 등 다양한 분야에서 응용될 수 있을 것으로 보입니다.

 

'Self-supervised learning of visual features through embedding images into text topic spaces'

이 논문에서는 자연어 데이터와 이미지를 사용한 멀티 모달로 레이블을 만들어 딥러닝 모델을 학습시키는 것이 아닌 알아서 학습하는 모델을 말합니다.

 

데이터셋의 통계적인 정보를 보면서 특정 텍스트의 정보들과 이미지 내의 시각적 특징들 간의 연관성을 파악하고 파악된 것을 기준으로 분류의 기준을 스스로 만들게 됩니다.

 

학습이 되면서 분류의 기준이 잘 만들어지면 이미지를 예측할 수 있게 되는 것입니다.

 

논문에 있는 그림을 보면 논문에 대해 이해하기 쉽습니다.

 

기사를 텍스트와 이미지로 분류하고 텍스트에 있는 주제를 LDA로 분석하여 각 주제별 확률을 구합니다.

 

그 주제를 스스로 학습시켜 이미지와 CNN을 이용하여 이미지를 학습하여 이미지의 답을 예측할 수 있게 됩니다.

 

이렇게 위키피디아 컬렉션이라는 데이터셋이 학습이 되고 input으로 기사가 들어오면 기사에 있는 텍스트를 통해 기사에 있는 그림이 무엇인지 추론이 가능해집니다.

 

위키피디아 데이터 셋을 통해 텍스트는 LDA로, 이미지는 CNN으로 들어갑니다.

 

이것의 장점은 수많은 데이터를 직접 넣지 않아도 됩니다.

 

그러나 효율성은 높지만 정확성은 낮을 수 있다는 단점이 있습니다.

 

이 논문에서 활용한 기술에 대한 간단한 설명입니다.

 

- LDA (Latent Dirichlet Allocation) : 텍스트에서 추출된 자연어로 된 데이터를 주제별로 정리하는 작업

 

- CNN(Convolutional Neural Network) : 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로 데이터에서 이미지를 직접 학습하고 패턴을 사용해 이미지를 분류하는 기술

 

- 크롤링 : 웹 페이지를 가져와 웹페이지에서 데이터를 추출해 내는 것

 

 

 

Self-Supervised Learning의 개념과 이에 관한 논문을 읽고 간단하게 리뷰를 해보았어요.

제가 읽고 추가적인 내용에 대해서는 검색하며 정리한 것이라 부족한 것이 있을 수도 있어 참고 부탁드릴게요.

이번 포스팅을 마칠게요 :)

 

 

참고 문헌: 'Self-supervised learning of visual features through embedding images into text topic spaces', Lluis Gomez, Yash Patel, Marçal Rusiñol, Dimosthenis Karatzas, C.V. Jawahar

'IT 공부 기록' 카테고리의 다른 글

VMware 1 - VMware에서 Windows 설치하기 및 VMware Network 설정  (0) 2021.09.28
IT 기초 1  (1) 2021.09.27
FW, IDS, IPS  (1) 2021.07.23
FVQA: Fact-based Visual Question Answering  (1) 2021.01.08
인프라란 무엇인가  (0) 2020.11.09

+ Recent posts