이번 포스팅은 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 영역에서 인프라란 좀 더 세분화되면서 깊은 의미를 가진다. 기본적으로 개발이나 서비스를 하기 위에 물리적으로 구성된 Network, DB, Server, Cloud 등을 의미한다. 즉, 데이터를 주고받기 위한 물리적 장비를 의미한다.
크게 하드웨어, 소프트웨어, 네트워킹으로 구분되며 요즘 시대의 인프라는 온프레미스 형태가 아닌 클라우드 형태로 IaaS 서비스를 많이 이용한다. 이는 인프라를 서비스 형태로 제공받는 형식으로서, 비용절감과 유지보수에 용이하기 때문이다. 이제 지금부터 인프라의 구성요소인 네트워크, DB 등 간단하게 알아보자!
- Network , 네트워크
네트워크는 사전적인 의미로 '네트워크는 Net + Work 의 합성어로써 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태'를 의미한다. 다시말해, 두대 이상의 컴퓨터와 같은 장치의 노드(node)들이 서로 패킷을 교환하면서 통신하는 것을 말한다.
네트워크 종류에는 작은 순서부터 작은 규모 네트워크인 PAN (Personal Area Network), 근거리 영역 네트워크인 LAN (Local Area Network), 대도시 영역 네트워크인 MAN (Metroplitan Area Network), 광대역 네트워크인 WAN (Wide Area Network) 이 있다.
- DB (DataBase) , 데이터베이스
DB는 DataBase의 약자로 사전적 의미로 '여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합'을 의미한다. 즉, 여러 사람이 업무를 수행하는 데 있어 사용하는 데이터들의 모임이다.
데이터베이스의 특징으로는 즉시 처리하여 응답하는 실시간 접근성, 최근의 데이터를 유지하기 위한 계속적인 변화, 동시에 데이터를 공유할 수 있는 동시 공유, 내용에 대한 참조, 데이터 논리적, 물리적 독립성이 있다.
데이터베이스 종류는 크게 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스, NoSQL이 있다.
- Server , 서버
서버의 사전적 의미로는 '컴퓨터네트워크에서 다른 컴퓨터에 서비스를 제공하기 위한 컴퓨터 또는 소프트웨어'이다. 즉, 서버는 클라이언트에게 네트워크를 통해서 정보, 데이터 등을 제공하는 시스템이다. 여기서 클라이언트는 서버에서 보내는 정보를 받는 컴퓨터, 소프트웨어를 말한다.
서버의 종류는 애플리케이션 서버, 컴퓨팅 서버, 데이터베이스 서버, 파일 서버, 웹 서버, 프록시 서버, 메일 서버, 게임 서버 등이 있다.