ECB는 운용모드중 가장 간단한 형태로 암호화와 복호화가 독립적으로 이루어진다. 때문에 병렬처리가 가능하다는 장점이 있다. 반면 블록의 암호화와 복호화에 사용하는 키가 같기 때문에 같은 평문에 대해 같은 암호문이 나온다는 단점이 있다. 때문에 블록재사용과 같은 취약점이 발생할 수 있다. 암호문 생성 또는 전송 중에 에러가 발생할 수 있다. 이러한 에러에 있어서 ECB는 독립적으로 암복호화되기 때문에 다른 블록으로 에러가 전파되지 않고 에러가 발생한 블록만 영향을 받는다.
2. CBC (Cipher Block Chaining)
CBC 운용모드는 ECB 운용모드의 취약점을 극복하기 위해 나온 것이다. 한 블록의 평문을 암호화하기 이전에, 이전의 평문이 암호화된 암호문과 XOR 연산을 하는 것이 특징이다. 맨 앞의 블록의 경우 이전의 암호문이 없기 때문에 IV (Initial Vector)를 사용하여 랜덤 초기화를 하는 것이 특징이다. CBC의 경우 암호화때는 병렬처리가 불가능하지만 복호화시에는 병렬처리가 가능하다. 에러전파의 경우 복호화시 암호문 $C_1$에 에러가 발생하면 $P_1$, $P_{i+1}$블록에 영향을 미치고 $P_{i+2}$블록 부터는 자기 복구(self recovering)을 통해 올바르게 동작한다.
3. CFB (Cipher FeedBack)
CFB 운용모드는 블록암호를 스트림암호로 변환한다. 평문과 이전 암호문이 암호화된 값과 XOR 연산을 통해 암호문이 생성된다. 초기에는 IV 값을 암호화하고 평문과 xor하여 암호문을 생성하는 것이 특징이다. CFB 운용모드는 평문과 암호문의 길이가 같아 별도의 정수배를 맞추는 패딩이 필요하지 않다. 복호화시에는 암호문을 알고있다는 가정하에 병렬처리가 가능하다. 에러전파는 CBC와 마찬가지로 암호문에 에러가 발생하면 해당 암호문에 해당하는 평문과 다음 평문에 영향을 미치게 되는 것이 특징이다.
4. OFB (Output FeedBack)
OFB 운용모드는 블록암호를 스트림암호로 변환한다. 평문과 암호문의 길이가 같아 패딩이 필요하지 않다. 동작 방식은 이전의 암호화된 값이 다시 암호화되어 평문과 XOR하여 암호문을 만들어낸다. 초기에는 IV 값을 암호화하여 평문과 다시 XOR한 뒤 암호문을 생성한다. 암호화와 복호화 과정이 동일하다는 특징을 가진다. OFB 모드에서는 평문과 관계없이 암호 알고리즘을 미리 돌려 XOR하기 위한 키스트림을 준비할 수 있는 것이 특징이다. 암호문에 1비트의 문제가 발생하면 대응되는 평문에 1비트의 에러가 발생한다.
5. CTR (CounTeR)
CTR 운용모드는 평문과 암호문의 길이가 같아 패딩이 필요하지 않다. 암호화와 복호화과정이 동일하다. 임의로 순서로 암호화와 복호화가 가능하다. Nonce와 Counter를 암호화하고 평문과 XOR하여 암호문을 만드는 것이 특징이다. 동일한 비밀키와 IV를 반복하여 사용할 경우 안전성에 문제가 생길 수 있다. 이러한 과정은 독립적으로 진행되어 병렬처리가 가능하다는 것이 특징이다. 암호문에 1비트의 문제가 발생하면 대응되는 평문에 1비트의 에러가 발생한다. EBC 모드 처럼 한 블록에서 생긴 에러가 다음 블록으로 전파 되지 않는다.
특허란 발명을 보호하고 장려함으로써 기술의 발전을 촉진하여 산업발전에 이바지함을 목적으로 한다. 또한 유용한 기술을 산업 발전을 위해 발명한 자에 대해 그 기술에 대한독점적 배타권리를 부여하고, 발명을 장려하기 위한 것이다. 특허의 3요소는 신규성, 진보성, 산업상 이용 가능성이다. 이러한 특허의 3요소는 특허청구범위(특허명세서)를 작성할 때 사용되며, 청구범위에 3요소에 대 한 의미를 충분히 파악하고 발명이 이러한 3요소를 갖추고 있다는 것을 명확히 기재해야 한다. 특허청구범위란 출원인이 특허권으로서 권리를 확보 및 보호하고자 하는 범위이다. 특허청구범위 에 작성되어야 할 핵심은 1항 또는 2항 내외로 명확하고 간결하게 기재해야 하는 것이 특징이다. 또한 특허청구범위는 독립항과 종속항으로 구성된다. 독립항은 다른 항을 인용하지 않고, 스스로 발명을 정의 내리는 항이다. 독립항은 자체로 완성된 발명이어야 하는 특징을 가진다. 종속항은 타 청구항을 인용하거나 부가하여 구체화될 수 있는 사항을 기재하는 항이다. 청구항을 기재할 때는 유기적 개요 또는 논리적 결합이 필수적이다. 단순 나열은 최대한 지양하여야 하며, 구성요 소간 상호결합관계, 구체적으로는 각각의 위치를 명확히 표현해야 한다.
1.1 특허청구범위 작성법
특허 작성 시 고려해야 할 양대 요소는 특허보호범위와 특허등록가능성에 대한 확장이다. 특허는 이 두가지 요소가 균형을 이루는 방향으로 작성되어야 한다. 만약 특허보호범위가 줄어들면 경쟁 업자가 특허 침해를 벗어나는 회피 설계가 쉬워지며, 특허 사용료를 받고 제 3자에게 실시권을 설정하는 계약을 할 때와 같이 특허권 행사가 어려워진다. 특허청구범위를 작성하는 방법에는 발 명에 필요한 필수구성 요소를 기재하는 것이 좋다. 즉 최소한을 내용으로 구성해야 한다. 또한 내 용에는 광의적인 의미의 용어를 사용해야 한다. 예를 들어 자전거나 자동차에 대한 특허를 낸다 고 할 경우 특허청구범위에는 분류체계상 상위에 있는 이동수단 또는 교통수단과 같은 더 넓은 의미의 용어를 사용하는 것이다. 청구항을 작성하는 보편적인 방법으로는 첫 번째로 위와 같이 필수적인 구성요소를 추출하고 명칭을 부여하는 것이다. 다음으로 필수 구성요소들을 시간 축 기 준 또는 여러 기준을 사용하여 적당한 순서로 나열한다. 이후 구성요소 별 특징 및 기능을 기재 한다. 이 때 구성요소의 기능 또는 역할을 단순하고 넓은 권리 범위를 충족시킬 수 있는 방향으 로 작성해야 한다. 마지막으로 각 구성요소들의 상호 관계를 기재한다. 특허 청구항에는 단순 나 열은 가급적 지양된다. 유기적으로 구성요소들의 결합 관계를 포함하지 않는다면 예외 케이스가 발생할 수 있어 특허를 등록한다 하여도 보호받지 못할 수 있기 때문이다.
1.2 기업과 특허 비용
기업들은 많은 수의 특허를 보유하고 있다. 하지만 특허를 유지하기 위해서는 특허 유지비가 발 생한다. 특허 유지비는 누진제적 성격을 가져 오랫동안 보유한 특허일수록 더 많은 비용을 내야한다. 이는 특허 발명자가 권리를 산업발전 또는 기술확산과 같은 공익에 기여하는 것보다도 사 익을 과도하게 추구하는 것을 방지하고자 하는 것이다. 국내의 삼성전자, LG전자, SK하이닉스 또한 특허 유지 비용에 있어 백억원~천억원대 정도의 유지비를 사용한다. 특허 유지에 많은 비용이 발 생하는 이유는 출원/등록에 법무 비용이 들고, 특허 유지 대가로 매년 일정 금액을 각국 등록 기 관에 지불해야하기 때문이다. 법무 비용을 포함하여 국내에서 특허 출원/등록의 경우 건당 300만 원 정도이며, 미국/유럽의 경우 2500만원 ~ 3000만원 가량 발생한다고 한다. 특허 등록 이후 특 허청에서는 매년 연차 등록료를 받으며 이는 곧 특허유지비와 같다. 연차 등록료를 내지 않을 경 우 특허는 소멸된다. 기업들은 이러한 특허 출원/등록 비용이나 연차 등록료와 같은 비용을 절감 할 필요성을 느끼게 되었고 선택과 집중을 통해 많은 양의 특허보다 필요로 하는 특허만 취하는 전략을 고수하게 되었다. 모 기업에서는 1인당 연간 1개 이상의 특허를 출원할 것을 강요하였으 나 지금은 더 이상 출원을 강요하지 않는다. 이러한 특허 비용 절감에 대한 다른 방법으로는 사 용하지 않는 특허를 매각하거나, 공증 기관에 신탁하여 다른 회사에서 일정 비용을 내고 사용할 수 있게 하는 방법을 채택할 수 있다. 더하여 버릴 수 없는 특허의 경우 청구항의 수를 줄여 비 용을 절약하는 방법을 사용하기도 한다.
-----
Q1. 특허 등록시 반드시 변리사를 거쳐하는가?
A1. 확인 결과 우리나라의 경우 특허출원에 있어 변리사 강제주의를 채택하지 있지 않기 때문에 특허출원을 위해 반드시 변리사를 선임하지 않아도 된다. 직접 특허청에 온라인 또는 서면으로 출원이 가능하다.
GAN이란 무엇인가? GAN은 Generative Adversarial Nets이라는 논문을 통해 나온 모델로 위와 같이 진짜와 동일해 보이는 이미지를 생성하는 모델이다. 그렇다면 우선 GAN은 언제 만들어졌고 어떠한 과정을 거쳐 성장하게 되었는가? 아래는 GAN의 History를 나타내는 그림이다.
GAN은 2014년 arXive에 처음 올라온 논문이며 이후, 인공지능 관련 학회인 NIPS에서 정식으로 게재되었다. 처음 GAN 모델이 소개된 이후 수 많은 GAN의 후속 연구들이 이어지고 있는 것을 확인할 수 있다. 위 [그림 2]에 기재된 연구의 경우 대표적인 논문들을 기재한 것이며 이외에도 포함되지 않은 연구들이 여럿 존재한다.
GAN은 포스팅 되는 2021.09.14 시점으로 약 35,000회의 인용이 있는 것을 확인할 수 있고. 화두가 되었었던 Tensorflow가 발표되었던 논문보다도 더욱 많은 관심을 받고 있는 것을 확인할 수 있다.
얀르쿤(Yann LeCun)은 GAN 모델이 지난 20년간 딥러닝 분야에서 가장 멋진 아이디어라고 말한다.
그렇다면 이 GAN이라고 하는 모델은 왜 각광받고 있고 후속 연구들이 이어지고 있는 것인가?
여러 이유가 있지만 그 중 단연 핵심이라 생각되는 것은 바로 기존의 지도학습의 한계 때문이다.
기존의 지도학습의 경우 데이터셋이 필수적으로 수반된다. 하지만 이러한 데이터셋을 만드는 과정에 드는 시간 등의 비용의 한계가 있기 때문에 어렵다는 것이다. 하지만 GAN은 지도학습에 사용되는 라벨 없이도 학습 가능한 비지도학습에 속하며, 데이터를 직접 생성하는 큰 장점을 가진다. 따라서 GAN의 경우 비지도학습의 선두주자로 불리고도 있으며, 몇몇의 사람들은 비지도학습이 더욱 각광받는 기술이 될 것이라 전망한다.
아래는 처음 GAN이 나왔을 당시 논문에서 제시한 GAN 모델의 결과 중 일부이다.
왼쪽 그림은 MNIST 데이터셋을 학습하여 오른쪽 노란박스와 같이 모델이 숫자를 생성할 수 있음을 보였다. 또한 오른쪽 그림은 TFD(Torronto Faces Dataset)을 이용하여 학습한 뒤 GAN 모델이 사람의 얼굴을 생성할 수 있음을 보였다.
초기의 결과물은 색채가 없고 화질이 좋지 않았다. 하지만 GAN 모델의 단점을 극복하는 연구들이 intensive하게 진행됨에 따라 아래와 같이 진짜 이미지와 구분하기 힘들 정도로 발전하는 단계가 되었다.
우리는 여기서 이러한 GAN 모델의 성능을 발전을 가능케 했던 대표적인 연구들을 살펴보고자 한다. 이를 위한 첫 단계로 모카님의 블로그에서 아래와 같은 GAN 연구의 분류체계를 확인할 수 있었다.
모카님은 GAN을 크게 3가지로 Unconditional GAN, Conditional GAN, Super Resolution으로 나누었다. 분류체계의 기준은 어떻게 정하였는지는 잘 모르겠다. 하지만 서칭 결과 더 체계적이라 판단되는 분류체계는 찾을 수 없었다. 따라서 이를 기반으로 주요 연구들을 살펴보았다.
우리가 알아보고자 하는 대표적인 연구들은 아래와 같다.
먼저 위 연구에 대해 한마디로 정리하면 다음과 같다.
DCGAN: 얀르쿤이 GAN을 낳았다면 Facebook은 DCGAN을 통해 모든 후속연구가 이어질 수 있도록 키운 모델
LSGAN: 기존 GAN에 적용된 Loss의 수식을 Least Square loss로 바꾸어 성능 향상을 도모한 모델
PGGAN: 기존 모델과 달리 점진적으로 학습하여 1024x1024의 고화질 이미지 생성을 가능하게 한 모델
CycleGAN: 역함수 개념과 순환일관성 손실 함수를 이용해 특정 이미지의 화풍을 다른 이미지에 적용할 수 있게 한 모델
StarGAN: 단일 생성자/판별자로 Domain Transfer가 가능하도록 만든 모델
SRGAN: GAN 모델의 인지적 해상도를 높여 고화질 이미지 생성을 가능하게 한 모델
2. Original GAN
2.1 Origianl GAN의 아키텍처
먼저 GAN의 아키텍처를 확인해보면 아래의 왼쪽 그림과 같이 간단한 형태를 가진다.
GAN은 크게 2가지 모델로 이루어져 있다. Generator와 Discriminator로 이루어져 있어 동시에 두 개의 모델을 훈련하는 것이 특징이다.
여기서 z라고 하는 것은 랜덤 벡터 z를 의미하는 것으로 오른쪽 그림의 uniform distribution이나 normal distribution을 따른다고 한다.
이 랜덤 벡터 z를 Generator의 입력으로 넣어 Fake를 생성한다. 이후 Real의 경우 실제 데이터셋을 의미하는 것으로 생성된 Fake와 실제 Real 이미지를 Discriminator의 입력으로 넣게 되면 Fake 또는 Real이라고 출력하게 된다.
GAN은 최종 출력인 Fake와 Real의 확률이 1/2에 수렴하여 진짜와 가짜를 구분할 수 없도록 학습하게 된다.
GAN을 더욱 이해하기 위해서는 확률밀도함수의 개념을 알아야 한다. 아래는 어떤 모종의 확률밀도함수를 나타내는 그래프이다.
2.2 확률 밀도 함수(PDF, Probability Density Function)
먼저 확률밀도함수란 통계학에서 사용되는 개념으로, 용어에서부터 직관적으로 이해할 수 있듯 확률변수의 분포를 나타내는 것으로, 연속확률변수 x에 대한 f(x)를 의미하는 것이라 볼 수 있다.
가령 GAN 모델에 안경을 낀 남성의 데이터를 학습시킨다고 할 경우, 안경을 낀 남성의 특징은 x1이라고 하는 벡터가 가지게 된다.
흑발 여성의 데이터셋을 학습 시킬 경우, 흑발 여성에 대한 특징을 x2라고 하는 벡터가 가지게 되며
금발 여성의 데이터셋을 학습 시킬 경우 GAN 모델은 금발 여성에 대한 특징을 x3라고 하는 벡터에 학습시키게 된다.
결론적으로 이렇게 학습된 확률밀도함수가 있을 때, 아래와 같이 GAN 모델이 생성한 이미지가 가지는 확률밀도함수와 둘 사이의 차이가 줄어들면 줄어들 수록 원래의 실제 이미지와 같아지는 원리라고 할 수 있다.
실제 Original GAN의 논문에 실린 그림은 아래와 같다.
※ 검은 점선: 원 데이터의 확률분포, 녹색 점선: 생성자가 만들어 내는 확률분포, 파란 점선: 판별자의 확률분포
파란 점선인 판별자(Discriminator)는 학습이 진행됨에 따라 GAN이 만들어내는 녹색 점선(Generator)와 분포가 동일해지는 것을 확인할 수 있다.
따라서 (d)의 단계에서는 판별자가 Real/Fake를 분류하게 되어도 확률이 같기 때문에 분류를 해도 소용 없게 되며 생성자는 실제 데이터와 매우 흡사하게 이미지를 생성할 수 있게 된다.
2.3 수식으로 이해하는 GAN
GAN은 생성자와 판별자의 경쟁구도이며, 경쟁을 통해 균형점(nash equilibrium)을 찾는 것이 목표라 할 수 있다.
GAN에서 사용되는 수식은 아래와 같이 간단한 형태이다.
G(Generator)를 minimize하고 D(Discriminator)를 maximize한다고 생각하면 된다.
수식을 가장 빠르게 이해하는 방법 중 하나는 수식에 0을 만드는 요소라던지 극값을 넣어 간단한 형태로 환원시키는 것이다. 먼저 수식 내의 값들을 0으로 만들어 보자.
Case 1: D(x)를 1로 만드는 경우 (판별자가 모든 것을 분류 가능한 경우)
D(x)=1인 상황은 logD(x)를 0으로 만드려는 것과 같다. D(x)=1이라는 의미는 판별자가 모든 것을 다 올바르게 Real/Fake 분류를 할 수 있음을 의미한다. 이렇게 되면 동시에 D(G(z))=1이 된다. 그 이유는 G가 아무리 진짜와 같은 이미지를 생성하더라도 D가 100%의 확률로 전부 잡아낼 수 있기 때문이다. 결과적으로 수식의 앞 부분은 logD(x)는 0이 되어 사라지고, 뒷 부분은 log(1-1)이 되어 무한에 수렴하게 된다. (log 함수 그래프 참조)
Case 2: G(z)를 1로 만드는 경우 (판별자가 모든 것을 분류하지 못하는 경우)
G(z)=1인 상황은 생성자 G가 실제와 구분하지 못할 정도로 흡사하게 만들어 판별자 D가 하나도 구분하지 못하는 상황과 같다. 이렇게 되면 수식의 앞 부분인 logD(x)는 log0이 되어 무한에 수렴하게 되고, 뒷 부분인 log(1-D(G(z))는 0이 되어 사라지게 된다. (이 상황의 경우 minmax요소가 바뀜. min→D, max→G)
2.4 코드로 이해하는 GAN
GAN의 수식을 코드로 표현할 경우 아래와 같아진다.
크게 4 영역으로 판별자 D의 layer, 생성자 G의 layer, D의 loss, G의 loss 부분으로 나뉜다. 핵심은 loss를 표현하는 영역으로 앞서 설명한 수식을 이용하여 위와 같이 작성할 수 있다.
2.5 실험 결과
결과적으로 앞서보았던 그림을 포함하여 크게 3종류인 (MNIST, TFD, CIFAR-10)의 데이터셋에 대해 학습하고 이를 생성자 모델을 사용하여 시각화 하는 것을 확인할 수 있다.
숫자와 얼굴의 경우 어느정도 식별 가능한 형태라 볼 수 있으며, 동물/사물에 대해서는 비교적 추상적으로나마 생성해내는 것을 확인할 수 있다.
2.6 한계점
기존의 GAN의 한계점은 크게 2가지로 나뉜다.
1. (성능 평가)
GAN 모델의 성능을 객관적 수치로 표현할 수 있는 방안이 부재했다. GAN의 경우 결과 자체가 새롭게 만들어진 데이터이기 때문에 비교 가능한 정량적 척도가 없었다는 것이다.
2. (성능 개선)
GAN은 기존 네트워크 학습 방법과 다른 구조여서 학습이 불안정했다. GAN은 Saddle Problem 혹은 Minmax를 풀어야 하는 태생적으로 불안정한 구조이기 때문이다.
실제 2016년 NIPS에서도 GAN의 안정화가 메인화두였다고 한다.
하지만 이의 두 단점을 모두 개선하여 GAN의 후속 연구가 줄줄이 이어나올 수 있도록 한 연구가 Facebook에서 개발한 DCGAN(Deep Convolutional GAN)이다.
2. DCGAN (Deep Convolutional GAN)
2.1 DCGAN의 연구 배경
기존의 GAN으로는 성능이 잘 나오지 않았는데 그 이유는 간단하게 Fully-Connected 되어 있는 구조이기 때문이다.
따라서 Facebook은 DCGAN이라고 하는 모델을 내놓으며 Fully-Connected 구조를 CNN으로 바꾸어 GAN의 성능 향상을 도모한 것이 핵심이라 할 수 있다.
2.2 DCGAN의 아키텍처
아래는 DCGAN의 Generator에 해당하는 아키텍처이다.
DCGAN은 생성자 모델에 Transposed Convolutional Network를 사용하여 Up-Sampling하는데 사용하였다. 위 그림에는 나와 있지 않지만 판별자 모델에는 단순 Convolutional Network를 사용한 것이 특징이다.
Trasnposed Convolutional Network의 경우 기존의 컨볼루션 네트워크처럼 줄어드는 것이 아닌 확대되는 것이라 할 수 있다. 아래 왼쪽은 기존의 컨볼루션 네트워크고 오른쪽의 경우 Transposed 컨볼루션 네트워크이다.
좌측 convolutional network는 5x5의 input에 3x3의 kernel을 사용하여 3x3의 output을 출력한다. 반면
DCGAN은 Generator의 구조에 우측의 Transposed Convolutional Network를 사용하였다.
하지만 단순히 CNN으로 변경하는데 있어서 좋은 성능을 내지 못했다. 따라서 최적의 성능을 내기 위해 5가지 방법을 적용하였다.
1. 미분이 불가능한 Pooling Layer를 제거하고 미분 가능한 Convolution 레이어로 대체하였다. (Unpooling시 매우 이상한 사진을 생성한다 함)
2. BatchNormalization 레이어를 추가하였다.
3. fully-connected hidden layer를 삭제하였다.
4. 생성자 모델에 ReLU 함수를 적용하고 출력의 activation function은 Tanh로 설정하였다.
5. 마지막으로 판별자 모든 레이어에 LeakyReLU를 적용하여 유연성을 더하였다.
위와 같은 intensive한 실험을 통해 알아낸 최적의 generator 구조가 [그림 22]라고 할 수 있다.
DCGAN의 전체 아키텍처는 아래와 같다. [그림 24]의 실험을 통해 알아낸 방법을 적용한 결과를 나타낸다. (출처: Here)
2.3 실험 결과
DCGAN을 사용하여 모델을 학습 시켜 이미지를 생성한 결과는 다음과 같다.
얀르쿤의 GAN 모델보다 훨씬 더 다채롭고 가시적인 이미지를 생성하는 것을 확인할 수 있다.
위와 같은 이미지를 생성하기 위해 학습에 사용한 데이터셋은 LSUN(Large-scale Scene Understanding), ImageNet-1K, Face dataset이다.
아래는 판별자 모델의 필터를 시각화한 결과이다.
각각의 filter들이 침대나 창문과 같이 침실의 일부를 학습하였고, 필터 시각화를 통해 기존의 모델들이 Black Box였던 문제점을 해소하였다.
또한 보간(Interpolation)을 수행하여 이미지의 각도를 변경이 가능함을 보였다.
여기서 보간이란 수치해석학에서 사용되는 개념으로 두 점을 연결하는 방법이다. 보간을 사용하는 이유는 모든 점을 메모리에 올리면 비효율적이기 때문에 특징이 될 수 있는 점들만 대표적으로 메모리에 올려 계산하기 위해 사용된다. 종류에는 다항식 보간법, 스플라인 보간법, 라그랑지 보간법, 뉴턴 보간법 등의 여러 종류가 있다.
또한 DCGAN을 통해 벡터 산술 연산(Vector Arithmetic)이 가능함을 보였다.
선글라스 낀 남성 - 선글라스 벗은 남성 + 선글라스 벗은 여성 = 선글라스 낀 여성이다.
2.4 주요 Contribution
DCGAN은 크게 5가지 컨트리뷰션이 있다.
1. 대부분의 상황에서 언제나 안정적으로 학습하는 Convolution GAN 구조를 제안하였다는 점
2. word2vec과 같은 벡터 산술 연산이 가능하여 Generator를 semantic 수준에서 데이터를 생성할 수 있다는 점
3. 판별자가 학습한 필터들을 시각화하여 특정 필터들이 특정 물체를 학습했다는 것을 보였다는 점
4. 학습된 판별자 모델이 다른 비지도 학습 알고리즘과 비교해서 뒤쳐지지 않는 분류 성능을 보였다는 점
5. 마지막으로 모든 GAN 연구의 시작점이 될 수 있게 만들어준 연구라고 볼 수 있다.
3. LSGAN (Least Square GAN)
3.1 연구 배경
LSGAN의 경우 단순히 loss 값만 변경하여 성능을 끌어올린 GAN 모델이다. 연구 배경으로는 Sigmoid cross entropy loss가 Gradient Vanishing 문제를 일으킨다는 것이다. 따라서 Sigmoid cross entropy loss → Least Square loss로 변경하자는 것이 이 논문의 핵심이라 할 수 있다.
위 그림을 보면 분홍색 *(star)를 볼 수 있다. 분홍색 *는 Generator가 생성한 가짜 이미지라 보면 된다. 하지만 이 가짜이미지는 판별자를 속였고 때문에 더 이상 학습하지 않는(Gradient Vanishing) 것을 확인할 수 있다. 이 때 LSGAN 모델의 아이디어는 판별자를 속였더라도 더 정교하게 속이기 위해 실제 real과 동일한 수준으로 끌어올리자(추가 학습하자)는 것이다.
3.2 코드로 이해하는 LSGAN
기존의 GAN과의 가장 큰 차이점이라고 하면 아래와 같이 D의 loss 함수와 G의 loss 함수에 Least Square loss를 적용한 것이라 할 수 있다. (Cross Entropy loss → Least Square loss)
3.3 실험 결과
Original GAN보다 높은 퀄리티를 보이는 이미지를 생성하는 것을 확인할 수 있다.
이러한 이미지를 생성하기 위해 LSUN(풍경 데이터셋), CIFAR-10을 활용하였다.
주요 컨트리뷰션 포인트 중 첫 번째는 High Quaility라는 것이고 두 번째는 More Stable하다는 것이다.
GAN을 평가하는 metric은 크게 두 가지 중 하나인 Inception Score가 Facebook에서 만든 DCGAN보다 뛰어난 성능을 보이는 것을 확인할 수 있다. (나머지 하나는 프리쳇 거리(Frechet Distance))
4. PGGAN (Progressive Growing GAN)
4.1 연구 배경
크게 2가지 단점을 극복하고자 PGGAN 모델이 만들어지게 되었다. 첫 번째로는 GAN을 고해상도로 만들면 판별자는 생성자가 생성한 이미지의 Real/Fake 여부를 구분하기 쉬워진다는 단점이 있고, 두 번째로는 고해상도로 만들어도 메모리 제약조건으로 batch size를 줄여야하고 줄이면 학습과정이 불안정해진다는 단점이 있었기 때문이다.
4.2 핵심 아이디어
PGGAN은 NVIDIA에서 진행한 연구이다. PGGAN의 핵심 아이디어는 4x4의 저해상도 이미지를 1024x1024 고해상도 이미지로 단계별(Progressive Growing)로 학습한다는 것이다.
기존에는 처음부터 고해상도 이미지를 학습하려다 보니 학습이 올바르게 되지 않았다. 이는 초등생에게 처음부터 미적분을 묻는 것과 같다고 한다. 따라서 기본적인 사칙연산에 해당하는 4x4, 8x8, 16x16으로 점진적으로 학습하게 되면 계속해서 간단한 문제를 묻는 것과 같기 때문에 학습이 더 잘된다고 한다.
따라서 저해상도에서 보이는 Abstract을 우선적으로 학습 한 뒤 고해상도에서 보이는 Concrete(눈, 코, 입, 모공 등)를 학습하는 것이 특징이다.
이러한 PGGAN의 장점은 크게 3가지로 나뉜다.
1. 작은 이미지부터 점진적으로 학습하기 때문에 안정성 있다.
2. 처음부터 복잡한 질문을 하지 않기에 간단하다.
3. 저해상도에서 학습할 때 충분한 학습을 하게 되며 학습 시간이 짧다.
4.3 실험 결과
가장 처음 설명한 Original GAN의 결과와 비교했을 때 비약적으로 발전한 것을 느낄 수 있다.
위와 같은 이미지를 생성하기 위해 CelebA-HQ 데이터셋을 사용하여 30,000개의 유명인사 사진을 학습했다고 한다.
또한 PGGAN의 성능의 경우 Inception Score가 8.8에 달하는 것을 확인할 수 있다.
4.4 Contribution Point
PGGAN의 핵심 컨트리뷰션 포인트는 기존의 DEGAN, EBGAN, BEGAN 등이 128x128 이미지 밖에 생성하지 못했던 것을 1024x1024의 해상도까지 끌어올린 것이 핵심이라 할 수 있다.
5. SRGAN (Super Resolution GAN)
SRGAN은 Super Resolution GAN을 의미하는 것으로 한마디로 말하여 저화질의 이미지를 고화질의 이미지로 바꾸는 모델이라 할 수 있다.
5.1 연구 배경
기존의 SR 모델에서 목적 함수를 MSE (Mean Square Error)로 학습하여 높은 PSNR (Peak Signal-to-Noise Ratio)를 가진다. 하지만 High Frequency 성분을 갖는 detail이 결여되어 있기 때문에 Texture를 표현하는 것이 어렵다는 점을 극복하기 위해 진행 된 연구이다.
쉽게 말해 MSE는 이미지가 조금 흐릿한 형태를 띠게 되는데 이는 MSE loss function은 average(평균제곱오차)를 학습하기 때문이다. 전반적으로 smooth한 정보를 얻어서 high frequency content를 표현하지 못한다는 것이다. 다시 말해 평균을 loss로 잡았기 때문에 이미지의 고주파수 영역이 평균 값으로 회귀 된다는 의미이다.
5.2 PSNR
먼저 PSNR을 설명하면, 최대 신호대비 잡음비라고 할 수 있다. 구체적으로, 신호가 가질 수 있는 최대 전력에 대한 잡음의 전력이다. 주로 동영상이 압축될 때 화질 손실 정보를 평가할때 사용하는 지표로, 높을 수록 결과 값이 좋다 할 수 있다.
하지만 이러한 PSNR의 단점은 원본 이미지와 왜곡 이미지 사이의 수치적 차이로 평가하기 때문에 사람 인지와 일치되지 않는 품질 점수를 산출한다는 것이다. 예를 들면 아래 그림과 같다.
PSNR 값은 유사하지만 품질을 제대로 반영하지 못하는 것과 같다. 이는 PSNR을 산출하는 수식에 내재한 단점이라 볼 수 있다.
핵심은 맨 아랫줄만 확인하면 이해할 수 있다. PSNR은 MAX에 log scale을 취한 것에 MSE에 log scale을 취한 것을 빼준다. 하지만 앞서 언급하였던 MSE를 사용하기 때문에 이미지의 고주파수 영역을 나타내지 못하고 결과적으로 PSNR 값에 따른 이미지의 품질이 사람의 인지와 달라지는 것이다.
이러한 단점을 극복하기 위해 대안으로 사용하는 것은 SSIM, MOS, PSNR-HVS, PSNR-HVS-M, VIF 등이 있긴하다.
하지만 다시 SRGAN 모델로 돌아와서, 결과적으로 이 연구에서 하고자 하는 핵심은 해상도를 평가하는 PSNR이라는 수치는 높더라도 실제 사람의 눈으로 봤을 때 해상도가 높지 않다. 따라서 실제로 눈으로 보더라도 해상도가 높게 나올 수 있도록 만들겠다는 것이 이 연구의 핵심이라 할 수 있다.
5.3 연구 핵심
위와 같은 단점을 해결하기 위한 핵심 방안으로, 인지적 유사성에 주목한 perceptual loss를 사용하였다는 것이다. percepual loss는 크게 2가지인 content loss와 adversarial loss로 구성된다.
5.3.1 content loss
pixel space에서 유사성 대신에 perceptual 유사성을 학습하기 위한 loss이다.
복잡할 것 없이 간단하게 이해하면 다음과 같다. LR(Low Resolution) 이미지를 즉, 저해상도 이미지를 생성자가 만들면 판별자가 판별할 것인데 N개를 판별한 합이 작아지도록 만드는 것이라 할 수 있다.
5.3.2 Adversarial loss
판별자를 속이기 위한 loss 함수라 할 수 있다.
쉽게 간략히만 이해하면 HR(고해상도)의 이미지에서 LR(저해상도)의 이미지를 빼고 제곱을 취해준 값의 합이 점점 줄어들도록 학습하는 것이라 볼 수 있다.
5.4 아키텍처
논문에 언급된 아키텍처보다 더 직관적으로 설명되어 있는 그림을 확인할 수 있었고 아래와 같다.
Pretrained된 2개의 VGG net loss를 사용한다. (reconstructed image와 reference image의 feature map 사이의 유클리디안 거리를 계산하는 방법을 사용) 여기에서 사용된 VGG22는 low level feature map을 대표하는 loss이며, VGG54는 high level feature map을 대표하는 loss라고 할 수 있다.
5.5 실험결과
평가 방법 중 MOS (Mean Opinion Score)를 사용하였는데 이는 Perceptual Quaility를 표현하기 위함이다.
Set5와 Set14의 경우 데이터셋을 의미한다. 저자들은 MOS라고 하는 벤치마크 스코어를 사용하여 MSE를 사용하였을 때 보다 높은 MOS 스코어를 얻음을 보인다. 하지만 MOS라고 하는 것은 일종의 주관적인 평가로, 평가자 몇 명을 모집하여 사용하는 방식이라는 점에 있어서 정량적이라기 보다 정성적인 평가에 가깝다고 볼 수 있다.
주요 컨트리뷰션 포인트로는 크게 2가지로, 첫번째는 새로운 perceptual loss를 제안하였다는 점이고 두 번째로는 모호하지만 새로운 벤치마크 스코어인 MOS를 제안하였다는 것이다.
또한 이러한 SRGAN을 사용하여 CCTV 영상의 화질을 개선하는 기법을 연구한 국내 연구 사례도 존재한다. 하지만 그럴듯하게 생성이 가능하다는 것이지 법적인 증거로서의 효력으로 채택되는 것은 별 개의 문제가 될 수 있겠다.
6. CycleGAN
6.1 연구 배경
CycleGAN 모델을 만든 저자는 한국인으로 이전의 pix2pix라는 연구의 확장이 CycleGAN이라 할 수 있다.
CycleGAN은 특정 화풍, 질감을 다른 사진에 적용할 수 있는가에 대한 질문에 답을 하기 위해 만들어진 모델이라 할 수 있다.
6.2 핵심 아이디어
특징이 겹치지 않는 서로 다른 이미지 집합(Unpaired)을 학습하기 위해 순환 일관성 손실 함수(Cycle Consistency)를 사용하였다는 것이다.
일종의 역함수라고 할 수 있다. 하지만 G를 통해 변환한 것이 F를 통해 재 변환될 때 원본과 최대한 가까워 지도록 loss 값을 설정하여 학습하는 것이라 할 수 있다.
참고로 Paired는 x좌표 값이 y좌표 값에 대응되는 정보가 담기지만 Unpaired는 대응되는 정보가 존재하지 않는 것이 특징이다.
paired의 경우 pix2pix 모델에서 사용했다 할 수 있고 unpaired의 경우 cycleGAN에서 사용하였다.
이러한 unpaired dataset에서의 translate를 위해 사용한 함수는 순환 일관성 손실함수인데 그 전체는 아래와 같다.
크게 어려울 것 없다. 역함수를 통해 나온 값이 만약 x'라면(strict하지 않기 때문에 x'가 나옴) x와의 차이가 줄어들도록 loss 값을 설정한 것이다. 마찬가지로 y'가 나온다면 y와의 차이 값이 줄어들도록 만든것이 순환 일관성 손실함수라 할 수 있다.
6.3 실험 결과
CycleGAN 모델의 실험 결과로 좌측의 Input 값을 넣으면 우측의 모네, 반고흐 등의 화풍으로 바꿔주는 것을 확인할 수 있다.
또한 CycleGAN에서는 실제 위성사진을 지도로 바꿔주고 지도를 실제 위성사진으로 얼마나 잘 바꾸어주는 가에 대한 실험도 하였고 아래 그림과 같다.
어색하거나 엉뚱한 결과를 내는 다른 모델들에 비해 Ground truth와 가장 유사한 그림을 만들어내는 것을 확인할 수 있다.
이러한 CycleGAN을 평가하기 위한 평가 메트릭으로는 AMT와 FCN-Score를 사용하였다.
AMT: 사람에게 어떤 것이 진짜인지 평가하는 방식으로 별도의 Metric이 없는 GAN에게 가장 강력한 점수
FCN Score: YOLO와 같은 객체 탐지 모델을 사용해 변환된 이미지에서 얼마나 사물을 잘 인식하는가?
CycleGAN이 다른 모델들에 비해 Map→Photo, Photo→Map에서 가장 우수한 성능을 보이는 것을 확인할 수 있다.
또한 FCN Score에서도 마찬가지로 CycleGAN이 다른 모델들과 비교하여 뛰어난 성능을 보이는 것을 알 수 있다. (pix2pix은 저자의 연구실에서 하던 이전 연구)
6.4 한계점
색상이나 질감은 변경할 수 있으나 객체의 모양은 바꿀 수 없는 것이 단점이다. 이는 여러 장의 데이터를 학습하여 분위기(화풍, 질감) 변경에만 초점을 두기 때문이다.
6.5 Contribution Point
주요 컨트리뷰션 포인트는 기존의 pix2pix 모델에 순환일관성 손실함수를 도입하여 unpaired한 데이터셋에서도 동작하게 만들었다는 것이 핵심이라 할 수 있다.
7. StarGAN
7.1 연구 배경
기존의 연구들은 image-to-image translation을 위해서 이미지 도메인 쌍을 학습해야 했다. 이러한 결과로 모델의 scalability와 robusteness가 떨어진다는 단점이 있었다.
여기서 도메인이란 이미지의 표정 변화, 이미지의 성별 변화, 이미지의 피부 색 변화 등을 의미한다.
따라서 StarGAN은 특정 도메인에 국한하지 않고, 하나의 Generator에서 다른 도메인으로 Transfer 할 수 있도록 만들었다는 것이다.
처음에는 StarGAN이라는 이름에서 유명인사를 의미하는 줄 알았으나 성(Star)형으로 모델을 구성하여 일종의 Transfer Learning이 가능하도록 만들었다는 것이다. 저자들은 Facial attribute transfer와 Facial expression synthesis task에서 경험적으로 효과가 있는 것을 확인하였다고 한다.
7.2 아키텍처
핵심만 간단하게 이야기하면 (a)의 Training the discriminator에서 기존 GAN처럼 Real/Fake만 출력하는 것과 달리 어떤 Task인지에 대한 Domain 정보까지 분류하도록 만들었다는 것이다. D는 결국 이미지와 도메인의 두 개의 확률 분포를 만들어낸다 볼 수 있다.
7.3 실험 결과
전반적으로 맨 아래의 StarGAN을 이용하면, 다른 여러 모델을 사용하여 Domain Transfer한 결과들 보다 가장 자연스럽게 나온다는 것을 확인할 수 있다.
StarGAN은 AMT 평가 메트릭에서 single attribute transfer에 있어서 가장 높은 성능을 보이는 것을 확인할 수 있고 multi attribute transfer에 있어서도 가장 높은 성능을 보이는 것을 확인할 수 있다.
또한 저자들은 Facial attribution transfer와 Facial Expression synthesis에서 정성적/정량적 두 측면 모두 superity를 달성했다고 말한다.
7.4 Contribution Point
핵심 컨트리뷰션은 모든 도메인 사이에서 학습하는 새로운 GAN 모델이며, 단일 생성자와 판별자로만 가능하게 만들었다는 것이다.
부수적으로는 Mask Vector라는 것을 사용하여 여러 데이터셋 간의 모든 도메인 사이에서의 이미지 변환 학습을 어떻게 해야하는지 보였다는 것이다. 여기서 Mask Vector란 모델이 모르는 라벨은 무시하고 확실히 아는 라벨에만 집중하는 것이라고 한다.
8. 평가 지표
GAN 모델이 생성한 이미지의 품질을 평가할 수 있는 여러 메트릭이 존재하며 그 메트릭의 종류는 아래와 같다. (출처: Here)
여러가지가 있지만 주로 크게 2개만 사용한하며 그것은 Inception Score(IS)와 Frechet Inception Distnace(FID)이다.
8.1 Inception Score (IS)
IS의 성능 평가기준 크게 2가지 이다.
생성된 이미지의 퀄리티 (Fidelity)
생성된 이미지의 다양성 (Diversity)
계산 방법은 Pretrained된 Inception 모델에 Real/Fake 데이터를 넣어 KL-Divergence를 계산한다고 한다.
이를 수식으로 이해하면 아래와 같다.
p(y|x)와 p(y)의 차이를 KL-Divergence로 측정하는데 두 분포가 크게 다르면 값이 커지는 지표이다. 쉽게 말해 두 확률분포의 차이를 계산하는데 사용하는 함수이다.
분류 모델에 이미지를 입력할 경우 높은 확률로 클래스를 예측한다면 생성 이미지(Fake)와 실제 이미지(Real)와 비슷하다 할 수 있다 이는 p(y|x)로 측정이 가능하다. 그리고 p(y|x)에서 x로 적분한 p(y)가 평등한 분포라면 생성된 이미지가 다양성을 갖고 있다 말할 수 있다. 이러한 두 가지 관점으로 생성된 이미지(Fake)를 평가하는 것이 IS이다. (출처: Here)
p(y|x): 주어진 input x에 대해 label y의 확률 분포
p(y): label 들의 확률 분포
이에 대한 이해도를 높이기 위해서는 아래의 공돌이의 수학정리노트라는 블로그에서 직접 변화를 관찰할 수 있다. (Here)
하지만 이러한 IS의 경우 생성된(Fake) 이미지만 사용하기 때문에 실제 이미지와 비교하지 못한다는 단점이 있다.
이를 보완하기 위해 나온 메트릭이 FID라고 할 수 있다.
8.2 Frechet Inception Distance (FID)
IS의 단점을 개선하기 위해 고안된 지표로, 두 분포 사이의 거리를 측정하는데 사용되는 방법이다.
1. 분류 모델에 따라 실제 이미지와 생성된 이미지의 특징량을 추출한다.
2. 특징량이 정규분포를 따른다 가정 후 그 분포 사이의 거리를 측정한다.
ur과 cr: 각각 실제 이미지에서 추출된 특징량의 평균과 공분산을 의미한다.
ug와 cg: 각각 생성 이미지에서 추출된 특징량의 평균과 공분산을 의미한다.
inception 네트워크의 중간 layer에서 feature를 추출하고 feature에서 평균과 공분산을 추출하고 계산한다.
FID 값이 낮으면 Real/Fake가 유사하다고 판단한다.
단점은 표본의 분포가 정규분포가 아닐 경우 제한적인 통계량(평균, 분산)만으로는 분포의 차이를 잘못 설명할 수 있다는 점이 있다.
실생활에서 사용되고 있는 GAN으로는 NAVER에서 웹툰에 GAN을 적용하여 몰입형 웹툰을 선보이기도 한다.
또한 PULSE9의 딥리얼 AI는 가상 인물 자동화 서비스를 제공한다. 20년간 활동한 국내 아이돌 이미지 데이터를 수집하여 가상의 101명의 아이돌을 만든다고 한다.
한국전자통신연구원(ETRI)에서는 SNS 트렌드를 분석해 6M장의 DB로 개인 취향의 패션상품 제작을 돕는 서비스를 개발한다고 한다.
패션영상 다중 정보 추출, 디자인 생성 & 스타일 변환, 착장 영상 자동 생성 등
또한 MyHeritage에서는 딥 노스텔지어라고 하여 정지된 사진에 생명을 불어 넣는 AI 서비스도 제공하고 있다.
앞으로의 GAN의 미래는 어떻게 되고 세상은 어떻게 변할까? 특이점이 온다의 저자인 레이 커즈와일은 기술의 발전속도는 기하급수적으로 바뀌어 2045년이 되면 기계가 인간을 뛰어넘는 세상이 온다고 하였다. 최근 Google, Facebook, OpenAI, NAVER 등의 기업에서 눈부신 연구들이 이루어지고 있고 커즈와일이 예측한 미래는 점점더 현실로 가까워져 가는 것이 느껴진다. 아직도 헤쳐나가야 할 요소들이 많겠지만 21세기 안에는 더욱이 비약적인 발전들이 이루어질 것이라는 강한 확신이 든다. 그렇다면 전례없이 빠르게 변화하는 지금의 시대에 나라는 사람은 후대를 위해 어떤 가치를 창출 할 수 있을지 많은 고민이 든다.
이 책의 핵심 내용은 제목과 동일하게 혼돈과 같은 삶을 살아가기 위한 12가지 지침이 핵심이라 할 수 있다. 이 책은 처음 읽었을 때와 시간이 지난 뒤의 평점이 달라진 책이다. 처음 이 책을 읽은 뒤 전체적으로 높은 평점을 주지 않았다. 하지만 시간이 지난 후로 다시 한 번 보았을 때 이해할 수 있는 내용의 범위가 넓어졌고 책 속에 기존 생각보다 더 좋은 의미들이 담겨 있다는 것을 알게 되면서 평가절상하게 되었다. 피터슨은 다학문간에 지식들을 결합하여 우리에게 알기 쉬운 말로 전달한다. 아래는 그 내용들이다.
01. 어깨를 똑바로 펴라
피터슨은 바닷가재의 서열 싸움에 대한 일화를 시작으로 인간과 갑각류의 뇌에는 서열 계산기가 있다고 한다. 만약 우리가 싸움에서 진 바닷가재처럼 축 늘어진 자세로 다닌다면 사람은 서열 계산기를 통해 우리를 지위가 낮은 사람이라고 생각한다고 한다. 이런 낮은 순위의 결과로 세로토닌의 양이 줄어들어 결과적으로 행복감이 떨어지고 불안감과 슬픔은 커진다고 한다. 따라서 자세부터 반듯하게 바로잡아야할 필요성을 언급하며 우리의 생각을 거침 없이 말하고 바라는 것이 있다면 그런 권리를 가진 사람에게 당당하게 요구하라고 한다. 이로 인해 세로토닌이 신경회로에 충분히 흐르고 앞으로 두려움이 사라져 나아갈 수 있는 토대를 마련해준다고 한다.
02. 당신 자신을 도와줘야 할 사람처럼 대하라
처음 읽을 때는 그 깊이를 가늠하지 못했던 말이 있다. 그것은 피터슨이 우리에게 요구한 3가지였다. 첫 번째는 지금 우리가 어디에 있는지 알아야 한다는 것이며, 두 번째는 지금 우리가 누군지 정확히 알아야 하는 것이고, 세 번째는 우리가 어디를 향해 가고 있는지를 알아야 한다는 것이다. 나 또한 이 물음에 대한 스스로만의 답을 내려봄으로써 삶의 방향이 크게 바뀌었고, 흔들리지 않을 삶의 목표를 확립할 수 있었다. 과거에는 이러한 질문에 대해 나의 생각을 찾으려 하지 않았고 관심도 없었다. 하지만 뒤늦게 자아정체성이 확립되는 과정에서 이러한 질문에 대한 생각의 필요성을 깨닫게 되었고, 덕분에 피터슨의 말대로 미래 계획을 세우고, 한계를 극복할 방법을 찾으며, 세상에 대한 희망을 품는 계기가 될 수 있었다.
03. 당신에게 최고의 모습을 기대하는 사람만 만나라
우리가 타인과의 병적인 관계를 끊지 못하고 있다면 그건 우유부단하고 박약한 의지 때문일 것이라고 말한다. 도덕적으로 세상을 더 나쁘게 만들려는 사람을 지지할 의무는 없다며, 오히려 도와주는 것이 그릇된 선택이라 말한다. 세상을 더 좋게 만들어 가려는 사람을 곁에 두고, 우리에게 유익한 사람하고만 관계를 맺는 것은 이기적인 행위가 아니라 바람직한 행위인데 이는 우리는 그들 덕분에 좀 더 나은 사람이 될 수 있고, 그들도 성장하는 우리를 보고 좋은 영향을 받을 것을 수 있기 때문이라고 한다.
04. 당신을 다른 사람과 비교하지 말고, 오직 어제의 당신하고만 비교하라
모든 인간은 평등하지만, 능력과 결과는 평등하지 않다고 말하며, 만약 어떤 게임에서 성공하지 못하면 다른 게임에 도전해도 된다 말한다. 우리의 장점과 약점, 우리가 처한 상황을 고려해 더 나은 게임을 선택할 수도 있기 때문이다. 또한 얻는 게 있으면 반드시 잃는 게 있기 때문에 모든 면에서 완벽한 인생을 사는 사람은 없다 말한다.
05. 아이를 제대로 키우고 싶다면 처벌을 망설이거나 피하지 말라
다섯 살이 될 때까지 올바로 행동하는 법을 배우지 못하면 친구를 사귀는 데 평생 어려움을 겪는다고 한다. 이러한 사회화를 위해서는 처벌이 당연하며 나아가 이러한 처벌을 언제, 어떻게 사용해야 하는 것이 더 중요한 것이라 말한다. 또한 자녀에게 줄 수 있는 가장 큰 선물은 올바른 훈육이라며 처벌의 중요성을 재차 강조한다.
06. 세상을 탓하기 전에 방부터 정리하라
알렉산드로 솔제니친은 제2차 세계 대전 당시 강제 노동 수용소에 갇히게 된다. 수용소 안에서 암도 걸렸고 대부분의 삶이 의미없는 노동에 낭비되었다. 하지만 솔제니친은 그 속에서도 이런 현실이 자신의 책임이 없는가를 생각하며 공산당을 무작정 지지하던 자신의 과거를 떠올리고 삶 전체를 되짚어 보았다. 이를 통해 자신이 갇힌 강제 노동 수용소를 고발하는 <수용소 군도>를 쓰게 되었고 결정적으로 공산주의라는 이데올로기를 뿌리째 흔들어 놓고 붕괴시킬 수 있었다. 우리 서로가 세상을 탓하기전 조금 더 책임감을 짊어진다면 더 좋은 세상이 되지 않을까 한다.
07. 쉬운 길이 아니라 의미 있는 길을 선택하라
이는 일본의 유명한 기업가인 이나모리 가즈오 회장이 이야기 한 바와 동일하다. 이나모리 가즈오의 경영원칙 중 하나는 쉬운 것이 아니라 옳은 길을 택하는 것이었다. 소크라테스 또한 쉬운 길을 거부했다. 그렇기 때문에 2500여 년이 지난 지금에도 그의 결정이 모두의 기억에 남아 마음의 위안을 준다. 피터슨은 세상을 더 좋게 만드는 일을 가치체계 가장 높은 곳에 두고 해야할 일을 해 나갈 것을 권한다. 반면 모든 것을 쉽게 하려는 편의주의는 비겁하고 천박하다 말하는데 이러한 행동에는 신념도, 용기도, 희생도 필요하지 않기 때문이라 말한다.
08. 언제나 진실만을 말하라, 적어도 거짓말은 하지 말라
진실만을 이야기 해야 하는 이유를 크게 세 가지를 들고 있다. 첫 번째는 진실한 모습을 드러내지 않는다면 우리의 진짜 모습을 알 수 없게 되며 두 번째는 우리의 잠재력이 억눌려 발휘되지 않는다는 것이며, 세 번째는 더 높은 꿈은 지위나 권력보다 인격과 능력의 향상과 관계 있기 때문이라 말한다. 노무현 대통령 또한 이 원칙을 고수하였다. 문제 제기가 될 수 있는 사항에 있어서도 회피하지 않고 늘 정면으로 맞서 솔직하게 임하였다. 그의 자서전에는 아내를 때렸다는 이야기를 직접 썼을 정도이다.
09. 다른 사람이 말할 때는 당신이 꼭 알아야 할 것을 들려줄 사람이라고 생각하라
피터슨은 우리는 대다수 경청하지 못하고 섣불리 상대를 평가하려는 습성이 있다 말한다. 하지만 섣불리 판단치 않고 상대의 말을 경청하면 상대는 자기 생각을 빠짐없이 솔직하게 말한다는 것이다. 피터슨은 대화할때 습관적으로 상대의 말을 요약해서 들려주고, 자신이 제대로 이해했는지 묻는다고 한다. 이렇게 하는 이유는 크게 세 가지를 들었다. 첫 번째는 상대의 말을 완전히 이해할 수 있고, 둘 째는 상대의 기억 강화 및 활용에 도움을 주며, 마지막은 허수아비 논법의 약점을 극복할 수 있다는 것이다. 또한 요약을 할 때 중요한 것은 당사자보다 더 명료하고 간결하게 표현할 수 있어야 한다고 말한다.
10. 분명하고 정확하게 말하라
우리의 의도를 말로 표현해야 우리가 의도하는 바를 명확히 알 수 있고, 말한 대로 행동해야 어떤 일이 일어날 지 알 수 있다고 한다. 따라서 원하는 것을 정확히 말하고 우리 스스로가 어떤 사람인지 주변인 들에게 있는 그대로 알릴 것을 말한다.
11. 아이들이 스케이트보드를 탈 때는 방해하지 말고 내버려 두어라
우리의 잘잘못을 가감 없이 따져 본 후에도 우리가 부당한 대우를 받을 이유가 없다고 확신한다면, 누군가 우리를 이용하게 있는 게 분명하고, 이럴 때는 우리의 입장을 강력하게 주장해야 하는데 이는 이것이 우리를 지키기 위한 도덕적 의무이기 때문이라 말한다. 또한 누군가를 비판해야 할 때는 잘못된 행위에 대한 세 개 이상의 증거를 찾아서 스스로 비판의 정당성을 입증하면 좋다고 말한다. 이렇게 할 경우 상대가 우리의 주장에 반박하더라도 논리적으로 재반박이 가능하며, 즉석에서 네 개 이상의 변명거리를 생각해 낼 사람은 거의 없다고 한다.
12. 길에서 고양이를 마주치면 쓰다듬어 주어라
None.
"완전히 깨우친 사람은 없다. 더 많은 것을 깨달아 가는 사람만 있을 뿐이다." - 조던 피터슨
오늘은 Attention is all you need 논문에 나오는 attention에 대한 개념과 논문의 핵심인 transformer 모델에 대해 알아보려고 합니다. Attention이란 무엇이고 trasnformer라는 모델은 왜 나오게 되었을까요? 설명에 앞서 Harper님의 블로그를 많이 참조하였음을 밝힙니다.
Attention 메커니즘의 도입 배경
먼저 Attention이라고 하는 개념은 쉽게 말해 조금 더 집중해서 보겠다라는 의미입니다. 집중해서 본다는 것은 당연 그만큼 중요하단 의미입니다. 그렇다면 attention은 무엇에 더 집중한다는 것일까요? attention은 주로 자연어 처리에 사용되는데, attention은 해당 시점에서 예측해야할 단어와 관련있는 입력 단어(input word)를 중점적으로 본다고 할 수 있습니다.
그렇다면 이 attention이라고 하는 개념이 왜 나오게 되었을까요? 바로 기존의 seq2seq 모델의 단점을 극복하고자 나오게 되었습니다. seq2seq는 RNN 계열의 모델이며 2개의 RNN을 연결하여 하나의 시계열 데이터를 다른 시계열 데이터로 변환하는 것입니다. seq2seq 모델에 대한 구체적인 내용은 2014년 12월에 발표된 Sequence to Sequence Learning with Neural Networks 논문을 참조하면 됩니다. 이러한 seq2seq 모델에는 크게 4가지 단점이 있고 아래와 같습니다.
1. 상당한 계산 복잡도를 가진다.
2. RNN 모델에서 병렬처리가 불가능하다.
3. long-term dependency를 가지는 단어를 참조할 때 거리가 멀어 참조가 잘되지 않는다.
4. 구조적으로 고정 크기의 벡터에 모든 정보를 압축하다보니 발생하는 정보손실 문제를 가진다.
이러한 RNN 모델의 단점을 잘 설명하는 그림은 아래와 같습니다.
참고로 RNN의 경우 NMT(Neural Machine Translation)에서 사용되며 위 그림은 영어를 한글로 번역하는 것을 나타내었습니다. 강아지가 소시지를 먹는다 또는 좋아한다를 예측하기 위해 likes를 참조합니다. 하지만 likes라는 단어는 여러번의 hidden layer를 거치면서 그 의미가 희석되었을 확률이 높습니다.
따라서 이러한 RNN의 단점을 극복하기 위해 나온 개념이 아래와 같이 attention이 추가된 RNN 입니다.
attention은 Input word에 해당하는 hidden layer와 출력해야 할 단어와의 연관성이 있는 단어에 가중치를 주어 output word를 출력하는 것입니다. 하지만 이 또한 병렬 처리가 불가능하다는 근본적인 RNN의 단점과 attention 계산까지 더해져 계산복잡도가 높아진다는 단점이 존재합니다.
Transformer 모델 도입 배경
Transformer 모델은 기존의 RNN 모델의 단점인 long-range dependency 문제를 극복하고자 제시 되었던 RNN with attention 모델의 단점을 극복하고자 나오게 되었습니다. 단점은 위 설명과 동일하게 병렬 처리 불가능과 attention 계산으로 인한 계산 복잡도가 높다는 것입니다. Transformer 모델의 아이디어는 attention을 통해 참조해야할 word의 위치(position) 정보를 얻음으로서 RNN with attention 모델의 두 단점을 극복하고자 하였습니다.
기존의 output word를 예측할 때만 attention을 사용했던 기존 모델과 달리 Transformer는 sequence 내의 단어 관계 정보를 self-attention을 사용하여 미리 계산해둡니다. 이를 통해 Transformer는 다음 단어를 효율적으로 예측하게 됩니다. 여기서 효율적이라는 의미는 RNN with attention 모델의 단점이었던 계산 복잡도를 줄였다고 볼 수 있습니다.
Trasnformer 모델 아키텍처
self-attention 메커니즘이 들어간 transformer의 핵심 아키텍처는 아래와 같습니다.
크게 Encoder와 Decoder로 나뉘어져 있습니다. Encoder와 Decoder의 경우 둘 모두 크게 3가지로 Positional Encoding, Multi-Head Attention과 Feed Forward NN이 사용되는 것을 확인할 수 있습니다. 논문에서는 Encoder와 Decoder의 N 값을 6으로 주어 Transformer 모델을 구성했다고 합니다. 이를 입체적으로 나타내면 아래와 같습니다.
전반적으로 Abstract한 과정은 먼저 Encoder와 Decoder에 sequence가 입력이 됩니다. 이후 positional encoding을 통해 Encoder/Decoder로 들어갑니다. Encoder의 출력을 보면 모든 Decoder의 Layer에 영향을 미치는 것을 확인할 수 있습니다. 이후 Decoder는 Linear layer와 Softmax layer를 거쳐서 단어의 확률 값을 나타낸다고 볼 수 있습니다.
Position Encoding
먼저 Positional Encoding은 단어의 위치 정보를 나타내기 위한 방법입니다. position을 나타내주는 벡터를 각각의 단어에 더해주는 방식으로 사용됩니다. 결론적으로 이러한 posotion encoding으로 각 단어의 상대적인 위치 정보를 포함하도록 합니다. 이러한 position encoding이 가지는 의미는, 기존의 임베딩과 같은 차원의 position encoding을 만들어 더해줌으로써 time signal을 가진 embedding을 인풋으로 받을 수 있게 된다는 것입니다.
Scaled Dot-Product Attention
Transformer에서 attention을 구하기 위한 가장 작은 단위입니다.
Scaled Dot-Product Attention은 전반적으로 두 개의 행렬 K와 행렬 Q의 multiplication을 통해 나머지 행렬 V 내의 정보를 추출하는 과정이라 할 수 있습니다. 구체적인 내용은 아래와 같습니다.
행렬 K와 행렬 Q를 Dot-product하게 되면 행렬 K를 이루는 벡터와 행렬 Q를 이루는 벡터 간의 내적이라 볼 수 있습니다. 이를 통해 K와 Q의 유사한 row vector 값의 연산값이 높게 나타나게 됩니다. 이후 이러한 결과를 Softmax 함수를 통과하게 되면 Q와 유사한 K의 row들이 확률의 형태로 나타나게 됩니다. 유사하다면 높은 확률로 나타날 것이고 이 확률 값과 V를 내적하게 되면 얻고자 하는 정보를 추출할 수 있습니다.
여기서 Query와 Key와 Value는 아래와 같은 의미를 가집니다.
Query: 영향을 받는 단어 A를 나타내는 변수
Key: 영향을 주는 단어 B를 나타내는 변수
Value: 영향에 대한 가중치를 나타내는 변수
이를 기반으로 다시 말해, Query를 예측하고자 하는 단어를 도출하기 위해 Key와 내적하여 가장 유사하여 확률 값이 높은 Key의 row를 추출하고, 이를 다시 Value와 내적하게 되면 가장 높은 확률 값을 구할 수 있게 된다고 볼 수 있습니다.
Multi-Head Attention
위에서 Q, K, V를 여러 다른 차원으로 projection 시킨 후 각각에서 Scaled Dot-Product Attention에 적용하여 종합한 결과를 도출하는 것이 Multi-head attention이라 할 수 있습니다. 다른 말로 multi-head attention은 self-attention을 병렬적으로 사용한 것이라 볼 수 있습니다.
V, K, Q 각각을 h번 다른 linear projection을 통해 변환시키고 병렬적으로 각각의 attnetion을 계산합니다. 이후 이를 종합하여 선형 변환을 통해 최종 값을 계산하게 됩니다.
Feed Forward NN
일반적인 feed Forward Neural Network와 동일하며, 문장내의 정보를 추출하는 역할을 한다고 볼 수 있습니다.
Transformer 모델 특징
위와 같은 메커니즘을 통해 transformer는 크게 학습에 있어 CNN과 RNN보다 significant하게 빠르다는 것이 장점입니다. 또한 input/output sequence의 거리에 관계 없이 동작가능하다는 것도 장점인데 이는 병렬처리를 하여 attention을 미리 계산해두었기 때문에 가능합니다.
복잡도 비교
아래의 표는 Self-Attention과 Recurrent, Convolution 레이어에 대한 계산 복잡도를 비교한 표입니다.
이 중 Transformer 모델에 도입한 Self-Attention 레이어가 가장 효율적임을 알 수 있습니다.
실험 결과
Transforemr 모델의 성능을 보면 아래와 같습니다. 아래는 BLEU 데이터셋에 대한 벤치마크 스코어와 부동소수점(FLOPs) 연산에 대한 결과 입니다.
base model로 영어 → 독일어 번역 성능을 앞질렀고, 이후 big model로 영어 → 프랑스 번역으로 SOTA를 달성한 것을 확인할 수 있습니다. 또한 부동 소수점 연산 또한 base model을 사용하여 대략 100배 가량 계산 효율성이 좋을 것을 확인할 수 있습니다.
이 책의 전반적인 내용은 개인의 자유와 권리, 다양한 삶의 방식들의 존중에 대한 내용이 주를 이룬다.
책을 읽는 동안 과연 나는 이와 같이 생각이 가능한가?라고 자문 하였을 때 단언컨데 아니었다. 자유를 두고 양심, 의견, 토론, 행동 등의 다양한 각도에서 이를 다룬다. 읽으며 들었던 생각은 책의 표지의 문구인 "우리가 누리는 자유는 『자유론』에 빚지고 있다."와 같았다. 자유에 대해 내가 알고 있던 것은 이 책을 벗어나지 못했다. 저자인 철학가 존 스튜어드 밀의 다각도적이고 뛰어난 사고에 대해 조촐한 나의 생각과 비교가 되며 좌절감이 들기도 하였다. 하지만 동시에 깊은 사고의 세계가 있음을 알게 되었고 더욱이 철학에 관심을 가지는 계기가 되어준 책이다.
밀은 한 개인의 의견과 행동이 아무리 옳다고 할지라도, 거기에 진리의 모든 것이 다 담겨 있을 수는 없다하였다. 아무리 옳은 것이라 할지라도, 거기에는 틀린 것이 있고, 아무리 틀린 것이라고 할지라도, 거기에는 옳은 것이 있다는 것이다. 그렇기 때문에, 모든 개개인에게 의견을 표현할 수 있는 "사상의 자유"와 자신의 의견을 거리낌 없이 표현하고 토론할 수 있는 "표현의 자유"가 반드시 필요하다고 말한다.
또한 이런 자유들을 허용하지 않는 것은 어떤 개인이나 집단이 "절대로 틀릴 수 없다"는 것을 전제하는 것이고, 그것은 독단이자 독선이며 독재라고 표현하며, 어떤 의견이 아무리 틀리고 사회의 상식에 어긋나는 것이라고 할지라도 그 의견을 표현하고 토론하는 자유를 막는 것보다도 허용하는 것이 사회에 더 큰 이득이 된다고 하였다. 만약 개인의 의견을 침묵시키게 된다면 크게 2가지 해악을 저지르는 것으로, 그 견해가 옳을 경우 인류는 오류를 진리로 대체할 기회를 빼앗기는 것이고, 그 견해가 틀린 경우 오류와 충돌을 통해 진리를 더욱 분명하게 인식하고 생생하게 드러낼 수 있는 기회를 놓치는 것이라고 한다.
또한 밀은 인간이 자신의 능력 범위 안에서 어떤 문제의 전체를 알 수 있는 유일한 방법은 온갖 다양한 의견을 지닌 사람들이 말하는 것을 듣고, 온갖 다양한 개성을 지닌 사람들이 그 문제를 바라보는 각양각색의 방색들을 연구해 보는 것이며 이 방법 이외의 다른 방법으로 지혜를 얻은 현자는 존재하지 않는다고 한다. 이는 인간 지성의 본질상 다른 방법으로 지혜를 얻는 것이 불가능 하기 때문이라 한다.
때문에 자신의 의견에 대해 반론을 제기하거나 취약점을 지적해주는 것을 피하기는커녕 도리어 기꺼이 반기는 태도를 가져야 한다고 한다. 적어도 분명한 근거를 제시하며 자신의 의견을 비판하는 모든 말들을 경청하고 그 비판자들에게 자신의 입장을 다시 설명하고 나서 거기에 대한 그들의 논평을 또 다시 들어보는 식으로, 자신의 의견에 대해서 조금이라도 빛을 밝혀줄 수 있는 것이라면 그 어떤 것도 차단하지 않는 사람의 판단은 그런 과정을 거치지 않은 개인이나 집단의 판단보다 더 나을 수 밖에 없다고 말한다.
철학자의 깊은 생각을 단 번에 소화해서 요약하기란 쉽지 않다고 느꼈다. 위의 내용이외에도 나의 생각으로 만들고 싶었던 생각들이 많았다. 내용상 조금 어려운 부분이 있으나 철학 입문에 좋은 책이 아닐까 한다.
"우리의 의견을 반박하거나 틀렸음을 증명할 수 있는 완벽한 자유가 주어진 상황에서 그 의견이 반박되지도 않고 틀렸음이 증명되지도 않아서, 그 의견을 올바른 것으로 전제하고서 행동하는 것은 정당하다. 그렇게 했을 경우에는, 인간의 역량으로 가능한 범위 내에서 우리의 의견이 이성적으로 올바르다는 것에 대해 최고의 확실성을 얻어낼 수 있다." - 존 스튜어드 밀
Manifold Learning이란 고차원 데이터가 있을 때 고차원 데이터를 데이터 공간에 뿌리면 샘플들을 잘 아우르는 subspace가 있을 것이라 가정에서 학습을 진행하는 방법이다. Manifold Learning은 차원축소를 위해 사용하며 이를 통해 고차원 데이터를 저차원에서도 잘 표현하는 공간인 manifold를 찾아 차원을 축소시킨다.
이러한 차원축소가 필요한 이유는 크게 두 가지로, 첫 번째는 차원의 저주 문제를 해결하기 위함이다. 고차원으로 갈수록 데이터들은 희박하게 분포하게 된다. 이럴 경우 비슷한 데이터들의 특성을 잘 표현할 수 없다. 따라서 차원축소로 차원의 저주 문제를 해결하고, 학습 속도와 모델 성능을 향상시키기 위해 Manifold Learning이 사용된다.
두 번째는 아래 그림과 같이 고차원 공간상에서의 데이터 포인트가 의미적으로 가까워보일 수 있으나 실제로는 거리가 먼 경우가 있고, 의미적으로 완전히 다를 수 있기 때문이다. 앞서 언급한 차원의 저주로 인해서 고차원 상에서 유의미한 거리 측정하기가 매우 어렵다.
이러한 문제를 해결하고자 Manifold Learning 즉, 차원축소 방법이 필요하다. 이러한 차원축소 방법 종류는 아래와 같이 크게 선형과 비선형으로 나뉘며 선형에는 PCA, LDA가 비선형에는 t-SNE, LLE, ISOMAP, MDS, AE 등이 있다.
선형
PCA는 1993년에 만들어진 차원축소 기법으로, 데이터를 투영시켰을 때 분산을 가장 크게 만드는 어떤 벡터(Principal Axis)를 찾는 방식으로 동작한다. 이를 위해 공분산 행렬과 특이값 분해(SVD)를 사용한다.(https://roytravel.tistory.com/341)
LDA는 선형판별분석이라 부르며 다른 클래스에 속한 데이터를 선형 분류 가능하도록 데이터 포인트를 투영시키는 알고리즘이다. PCA는 단순히 데이터 포인트의 분산이 가장 크도록 만드는 벡터를 찾았다. 반면 LDA는 데이터 포인트를 투영시켰을 때, 클래스간 거리를 최대가 될 수 있게 데이터 포인트의 평균거리 합을 최대로 만드는 조건과 클래스 내 데이터 포인트의 분산을 최소로 만드는 조건을 갖춘 벡터를 찾는다.
비선형
t-SNE는 고차원 공간에서 유사한 두 벡터가 저차원에서도 유사하도록 원 공간에서 점들 간 유사도를 보존하며 차원을 축소하는 방법이다.
Kernel PCA는 기존 PCA와 같이 linear projection을 수행하는 것이 아닌 약간의 트릭을 추가하여 non-linear projection을 수행할 수 있도록 하는 방법이다.
LLE는 PCA로는 불가능한 비선형적 차원 축소를 가능하게 하는 방법이다. 고차원 공간에서 인접한 데이터 포인트 간의 선형적 구조를 보존하면서 저차원으로 임베딩한다. 다르게 말해 LLE는 각 데이터 포인트들이 k개의 neighbor들과 얼마나 선형적으로 연결되어있는가를 추론하는 과정이다. 크게 아래 3단계로 동작한다.
첫 번째로 가장 가까운 이웃을 찾고 두 번째로 가중치 행렬을 구성한 다음 부분적으로 고유치를 분해하는 방식으로 동작한다. LLE는 기본적으로 isomap 방식과 목적은 동일하지만 Locality를 어떻게 수학적으로 반영하냐에 따라 ISOMAP의 차이가 발생한다.
ISOMAP은 1952년에 만들어진 것으로 다차원 스케일링(MDS) 또는 주성분 분석(PCA) 두 방법론을 결합한 방법이다. 모든 점 사이의 측지 거리를 유지하는 더 낮은 차원의 임베딩을 찾는다. 측지 거리란 두 측점 사이의 타원 체면을 따라 이뤄진 거리를 말한다.
위 그림을 보면 두 점은 유클리디안 거리로는 가깝지만 실제 측지 거리는 색깔이 나타내는 의미만큼 멀리 떨어져 위치함을 알 수 있다. 즉, Isomap 알고리즘은 두 데이터간의 실제 특징을 반영하는 거리 정보를 사용하는 효과적인 차원 축소를 추구한다.
MDS는 다차원척도법으로 D차원 공간 상의 데이터가 있을 때 그 데이터 간의 거리가 저차원 공간상에서도 최대한 보존되도록 하는 벡터를 찾는 방법이다.
Auto Encoder는 실제 공간에 표현된 데이터를 보다 잘 표현할 수 있는 잠재 공간(latent space)를 찾아 축소하는 방법이다. 데이터를 잠재 공간으로 압축하는 encoder와, 잠재공간을 이용해 원래 데이터로 복원시키는 decoder를 사용한다.
큐비트의 동작을 위해 중첩(superposition)과 얽힘(entanglement)이 필요하다.
먼저 중첩(superposition)이란 0과 1의 상태를 동시에 가지는 것을 의미한다. 지금의 컴퓨터는 0 또는 1로 표현되지만 중첩을 통해 0과 1의 상태를 동시에 가지고 있을 수 있다. 이러한 중첩과 관련해서 슈뢰딩거의 고양이라는 사고 실험이 있다. 처음 슈뢰딩거가 막스보른의 주장을 논파하기 위해 고안한 사고실험이었으나 오히려 역설적으로 양자역학을 가장 잘 설명한다.
얽힘(entanglement)은 단어 그대로 양자가 서로 얽혀있다는 것이다. 이 때 특징은 그 양자가 우주의 양 끝에 있어 멀리 떨어져 있더라도 연결이 되어 있고, 하나의 양자를 관측하는 순간 시공간의 제약을 넘어 빛의 속도 보다 빠르게 상태 정보가 반대쪽 양자에게 전달된다는 특징이 있다. 이를 양자의 비국소성이라고 한다.
2. 큐비트 설계
큐비트를 설계하기 위한 여러 방식이 있다. 크게 5가지 방식으로 나뉘며 종류는 초전도 루프를 이용한 큐비트 설계 방식, 이온 덫을 이용한 방식, 실리콘 양자점을 이용한 방식, 위상학 큐빗을 이용한 방식, 다이아몬드 점결합을 이용한 방식이 있다.
2.1 초전도 루프
초전도 루프 방식은 온도가 낮을수록 저항이 낮아진다는 방식을 이용하는 것이다. 금이나 구리는 아무리 차가워지더라도 항상 일정 수준의 저항을 보인다. 하지만 수은의 경우 다른 양상을 띠는데 수은을 4.2K까지 냉각시키면 저항이 0이 된다. 즉 수은은 전기저항이 0인 물질인 초전도체 물질이라 할 수 있다. 이외에도 임계 온도에서 저항이 0이되는 알루미늄, 갈륨, 니오븀 등이 있고 이러한 초전도체성을 띠는 물질을 이용하는 방식이 초전도 루프 방식이다.
초전도체의 가장 좋은 장점은 전기 손실이 없기 때문에 폐쇄 루프 내의 전류가 이론적으로 영원히 흐를 수 있다는 것이다. 실제로 초전도 링 위에서 전기를 수 년동안 흐르게 함으로써 실험적으로 입증된 바도 있다. 이러한 초전도 루프 방식의 또다른 장점은 오류 발생이 적다는 것이다. 약 99.4%의 논리 성공률을 보인다. 그리고 속도가 빠르고 기존의 재료 위에 구축이 가능하고, 2큐비트 연산을 수행할 수 있는 얽힘 큐빗의 개수가 9개로 적절하다고 한다. 하지만 단점으로는 크게 2가지인데 첫 번째로는 수명이 0.000005초에 불과하다는 것이다. 여기서 수명이란 상태 중첩이 유지될 수 있는 최소한의 시간을 의미한다. 두 번째로는 -271'C에서 보관해야 한다는 점이다.
이러한 초전도 루프 방식의 활용은 IBM 클라우드 플랫폼인 Q Experience에서 사용된다. 또한 구글 및 초전도체를 기반으로 실용 양자 컴퓨터의 제작을 목표로하는 벤처기업인 QCI도 이 방식을 채택한다.
2.2 이온 덫
이온 덫(ion trap)은 큐비트 내의 양자 상태를 제어하기 위한 기법이다. 이 방식은 초전도 루프 방식에 비해 얽힘을 저장하는 수명이 길다는 장점이 있다. 최대 1,000초까지 얽힘을 저장할 수 있다고 한다. 또한 성공률이 99.9%를 띠며, 2큐비트 연산을 수행할 수 있는 얽힌 큐비트의 개수가 14개로 가장 많다. 하지만 단점으로는 속도가 느리고, 많은 레이저가 필요하다. 이 기술을 활용하여 양자 컴퓨터를 만드려고 하는 선두주자는 미국 메릴랜드의 아이온큐(IonQ)이다.
2.3 실리콘 양자점
실리콘 양자점을 이용한 방식은 인텔(Intel)이 주도하고 있다. 실리콘 양자점을 이용하면 기존 반도체 재료 위에 구축되기 때문에 안정적이라는 장점이 있고 수명이 0.03초로서 초전도 루프방식에 비해 상대적으로 길다. 하지만 단점으로는 2큐비트 연산을 수행할 수 있는 얽힘 큐비트의 수가 2개로 적다는 것이다. 초전도 루프나 이온 덫에 비해 성공률이 낮지만 그럼에도 99%로 높은 편이다.
2.4 위상학 큐빗
위상학 큐빗을 이용한 방식은 양자 컴퓨터의 특징인 높은 오류 발생률을 낮추는데 중점을 둔 방식이다. 오류는 양자역학이 본질적으로 확률적이기 때문에 큐비트 얽힘의 지속시간으로 나타낼 수 있다. 위상한 큐빗은 아니온(anyon)이라는 2차원 준입자를 사용한다. 이 입자들은 서로 지나가면서 3차원 시공간에 끈(braid)을 형성하며, 그리고 이 끈들이 컴퓨터를 구성하는 논리 게이트를 형성한다.
이 방식의 장점은 안정적이고 오류가 없다. (수명이 적용되지 않음) 하지만 단점으로는 현 시점에서 순수하게 이론적 논의에 불과하다는 것이다. 다만 최근 실험으로는 현실에서도 절대 0도 근처의 낮은 온도와 강한 자기장에서 갈륨 비소로 만들어진 반도체를 사용하면 생성 가능할 것으로 확인되었다. 마이크로소프트와 벨 연구소가 이 설계 방식을 사용한다.
2.5 다이아몬드 점결합
다이아몬드 점결합의 경우 다이아몬드 표면에 있는 점결합을 이용하는 방식이다. 이 다이아몬드 점결합 방식의 가장 큰 장점은 -272도까지 온도를 낮출 필요 없이 실온에서 동작한다는 것이다. 또한 10초간의 긴 수명을 갖고 있고, 99.2%의 높은 성공률을 띤다. 2큐비트 연산을 수행할 수 있는 얽힘 큐비트의 수가 6개로 적당한 특징도 있다. 단점으로는 다이아몬드 표면의 약 2%에만 다이아몬드 점결합이 있다는 것이며, 얽힘을 만들기 어렵다는 점도 있다. 때문에 이러한 단점을 보완하기 위해 전자빔을 다이아몬드에 발사해 더 많은 결함을 생성시키는 연구가 이루어지고 있는 것이 특징이다.
결론적으로 이렇게 5가지 큐비트 설계 방식이 존재하며 현재까지는 초전도 루프 방식이 가장 앞서고 있다.
3. 트랜지스터와 양자 스케일
트랜지스터는 전자를 통과 혹은 차단하는 아주 작은 온오프 스위치다. 최근 트랜지스터는 크기가 14 나노미터로 분자크기와 비슷한 수준이다. 인류는 이러한 트랜지스터를 이용해서 컴퓨터나 의료장비나 항공우주 H/W 등에 사용했고 인류사회에 많은 기술적 진보를 가져왔다. 하지만 이 트랜지스터의 한계는 물리 법칙의 한계와 맞닿아 있다. 특히 양자역학이라는 건너기 힘든 벽에 직면하고 있다. 단위 면적당 트랜지스터를 몇 개나 집적할 수 있느냐에 따라 집적도가 결정된다. 따라서 트랜지스터의 크기를 가능한 작게 만드는 것이 중요하다. 트랜지스터의 크기는 1970년대 10마이크로미터, 1980년 후반에 1마이크로미터, 1990년대 나노미터에 이르렀다. 2020년의 트랜지스터의 크기는 약 5나노미터이다. (물 분자 크기 = 약 0.275 나노미터) 하지만 이렇게 점점 작게 만들수록 양자스케일이 문제가 된다.
양자스케일이란 일종의 treshold(역치)로, 거시적으로 영향을 미치는 고전역학의 효과와 미시적으로 영향을 미치는 양자역학의 효과를 가르는 거리를 의미한다. 이 경계는 100nm 이하의 범위 또는 초저온에서 발생하는데 현재 이 트랜지스터를 작게 만들수록 이러한 양자스케일 문제 해결이 어렵다는 것이다. 이러한 양자스케일에서 일어나는 현상인 양자 터널링 현상이 있다.
3.1 전자 터널링/양자 터널링
양자 터널링이란 고전적 스케일에서 넘어갈 수 없는 장벽을 양자 스케일에서 입자가 통과하는 현상이다. 양자 터널링은 전자 터널링은 같은 의미이며, 이는 트랜지스터에 큰 문제를 야기한다.
만약 위치 에너지가 V인 장벽을 에너지가 E인 입자가 넘어가려 한다면 고전적인 에너지 보존 법칙에 의해서 E>V가 되어야 장벽을 통과할 수 있으나 양자역학에 따르면 E<V라도 장벽을 통과할 수 있다는 것이다. 즉, 트랜지스터를 아무리 나노단위로 줄인다 하더라도 이러한 양자 터널링 현상 때문에 문제가 야기 된다.
4. 양자 컴퓨팅의 활용
양자 컴퓨터를 사용하면 여러 방면에 활용할 수 있다.
4.1 복잡한 시뮬레이션
지금의 고전 컴퓨터에서 무한히도 오래 걸릴 양자역학적 계를 양자 컴퓨터에서는 비교되지 않을 수준으로 시뮬레이션할 수 있다. 이런 시뮬레이션을 통해 가능할 것으로 보이는 것은 카오스적 현상의 설명이다. 예를 들어 지금의 기상청은 날씨를 정확하게 예측할 수 없다. 소수점이 조금만 달라지더라도 예측값이 완전히 달라지기 때문이다. 기상청은 여러 시뮬레이션을 통해 앙상블한 값을 기상 예보로 내고 있다. 만약 양자 컴퓨터를 사용하여 시뮬레이션 한다면 카오스에 숨겨진 역학을 통해 훨씬 더 높은 예측을 할 수 있을 것으로 판단된다.
4.2 분자 모델링과 신소재
양자 컴퓨터를 활용한다면 신약 개발에도 활용할 수 있다. 실제로 수소 원자 2개와 베릴륨 원자 1개로 구성되는 베릴륨 수소와 물 분자를 모델링한 바가 있다. 분자 모델링은 양자 컴퓨터의 새로운 응용 분야이다. 분자 모델링은 초창기에 지나지 않지만 화학 및 제약 회사에게는 미래가 유망한 분야다. 분자 시뮬레이션은 양자 컴퓨팅의 킬러 앱이 될 가능성이 높다.
4.3 정교한 딥러닝
딥러닝에서 사용하는 일부 최적화 문제는 문제 해결에 요구되는 상호작용 변수들의 수가 너무 많아 기존 하드웨어로는 접근하기 힘들다는 단점이 있다. 예시로 단백질 폴딩이나 우주선 비행 시뮬레이션 등이 있다. 양자 컴퓨터는 확률적 경사 하강법(stochastic gradient descent)을 사용해 최적화에 효율적으로 대처할 수 있다고 한다. D-wave라는 캐나다 기업은 Stochastic gradient descent을 사용해 최적화 문제를 해결하도록 특별히 설계된 양자 컴퓨터를 판매중에 있으며, 방산 업체인 록히트 마틴과 구글을 고객으로 하고 있다.
5. 양자 어닐링
먼저 어닐링이란 열처리 방법을 의미한다. 기존의 어닐링 방법은 열 에너지가 위치에너지를 뛰어넘어야 하지만 양자 어닐링은 뛰어넘지 않는 것을 의미한다. 양자 어닐링은 양자 컴퓨팅에 속하는 개념으로 제한적 양자 컴퓨팅이라 불리기도 한다. 양자 어닐링에서 사용되는 주요 개념 중 하나는 해밀토니안으로, 이는 모든 입자의 운동 에너지 및 양자역학계와 관련된 입자들의 위치 에너지 합계를 의미한다.
IBM Q와 같은 플랫폼은 큐빗 제어를 위해 논리게이트를 사용한다. 양자 어닐링 컴퓨터는 논리 게이트인 양자 게이트가 없기에 큐빗의 상태를 완전히 제어할 수 없다는 특징을 갖는다. 다만 단열 정리에 의해 큐빗의 동작을 예측할 수 있는데 이를 통해 에너지 최소화 문제를 해결할 때 유용하다는 특징이 있다. 다르게 말하면 양자 어닐링을 통해, 탐색 공간이 국소적 최소값에 이산적인 조합 최적화 문제에 주로 사용된다. 이러한 특징을 이용하는 회사가 디웨이브이다. 디웨이브의 시스템들은 큐빗이 에너지 상태를 최소화하는 경향이 있다는 것을 이용한다.
참고로 양자 어닐링을 통한 컴퓨팅에서의 단점은 쇼어알고리즘을 실행시킬 수 없으며 이는 큰 파장을 불러 일으킨 적 있다.
합성공 신경망은 이미지 데이터를 학습하고 인식하는데 특화된 알고리즘에 해당한다. Convolution의 의미는 신호처리 분야에서 사용되는 용어로 이미지 프로세싱에서일정한 패턴으로 변환하기 위해 수행하는행렬연산이라는 의미를 가진다. Convolution은 특정한 수가 조합된 행렬인 필터(=커널)을 사용하는데, 이러한 필터의 값이 어떻게 구성되어 있느냐에 따라 패턴이 달라진다[1].
CNN은 1989년에 나온 모델로 현재의, 이미지를 인식하고 처리하는, 컴퓨터 비전 분야에서 가장 많이 사용된다. CNN 모델의 아이디어는 아래의 실험으로부터 차용하였다.
1950년대 허블과 비셀은 고양이의 시각 피질 실험에서 고양이 시야의 한 쪽에 자극을 주었더니 전체 뉴런이 아닌 특정 뉴런만이 활성화되는 것을 발견했다. 또한 물체의 형태와 방향에 따라서도 활성화되는 뉴런이 다르며 어떤 뉴런의 경우 저수준 뉴런의 출력을 조합한 복잡한 신호에만 반응한다는 것을 관찰했다. 이 실험을 통해 동물의 시각 피질 안의 뉴런들은 일정 범위 안의 자극에만 활성화되는 ‘근접 수용 영역(local receptive field)’을 가지며 이 수용 영역들이 서로 겹쳐져 전체 시야를 이룬다는 것을 발견했다.
이러한 아이디어에 영향을 받은 얀 르쿤 교수는 인접한 두 층의 노드들이 전부 연결 되어있는 기존의 인경신경망이 아닌 특정 국소 영역에 속하는 노드들의 연결로 이루어진 획기적인 인공신경망을 고안해냈고 이것이 바로 합성곱 신경망이다.
Feature extraction using convolution위의 그림을 통해 특정한 필터를 통해 이미지 데이터에 Convolution(행렬 연산)이 적용되어 변환하는 과정을 확인할 수 있다. 이미지 데이터는 픽셀들의 합으로 이루어져 있는데 한 픽셀은 RGB의 세가지 색으로 구성된다. 따라서 100x100의 아주 작은 이미지라 하여도 (100 x 100 x 3) = 30,000개라는 큰 크기의 데이터로 구성되고 이에 따라 수 많은 이미지를 일반적인 신경망에 그대로 입력시키게 되면 학습에 있어 많은 시간이 필요하게 된다.
위와 같이 3x3 사이즈의 필터를 통해 Convolution을 수행하면 오른쪽 그림과 같이 데이터의 크기가 축소되는 효과를 얻을 수 있고, 이러한 Convolution을 여러번 적용하여 데이터의 크기를 줄이면서 이미지의 특징(패턴)을 추출할 수 있다는 것이 합성곱 신경망의 특징에 해당한다[2].
완전 연결 계층의 문제점
완전 연결 계층의 경우 이미지 전체를 하나의 데이터로 생각하여 입력으로 받아들이기에, 이미지의 특성을 찾지 못하고 이미지의 위치가 조금만 달라지거나 왜곡된 경우 올바른 성능을 내지 못한다. 즉, 완전연 연결 계층을 이용하여 이미지 분류를 하면 3차원(높이, 폭, 채널)인 이미지 데이터를 입력층에 넣어주기 위해 3차원에서 1차원으로 데이터 변환하는 과정을 거치는데, 이 때데이터의 형상이 무시된다는 점이다. 이미지 데이터의 경우 3차원(높이, 폭, 채널)의 형상을 가지며, 이 형상은공간적 구조(Spatial Structure)또는공간 정보라 불리는 정보를 가진다.
이미지에있어 공간 정보라는 것은 말 그대로 이미지가 가지는 공간적인 정보를 의미하는데, 가까운 픽셀들은 서로 픽셀값이 비슷하여 사진에서 음영, 선, 질감 등으로 보여진다거나, RGB의 각 채널은 서로 밀접히 관련되어 있거나, 거리가 먼 픽셀간의 관련이 없는 등의 정보들을 의미하며 이러한 정보들은 완전 연결 계층에 입력을 위해 3차원에서 1차원으로 Shift되는 순간 정보가 사라지는 문제가 발생한다[3]. 그러나 합성곱 신경망은 완전 연결 신경망과 달리 3차원의 이미지를 그대로 Input Layer에 입력하고 출력 또한 3차원 데이터로 출력하여 다음 Layer로 전달하기 때문에 데이터의 원래 구조를 유지할 수 있다. 이렇게 할 경우 이미지가 왜곡된다하여도 입력 데이터의 공간정보를 잃지 않기 때문에 CNN에서는 형상을 가지는 데이터의 특성을 추출할 수 있어 제대로 학습할 수 있게 된다.
이미지 처리와 필터링 기법
이미지 처리에는 다음과 같이 여러 필터링 기법이 존재한다.
https://en.wikipedia.org/wiki/Kernel_(image_processing)위와 같이 기존에는 이미지 처리를 위해서 고정된 필터를 사용했고, 이미지를 처리하고 분류하는 알고리즘을 개발할 때 필터링 기법을 사용하여 분류 정확도를 향상시켰다. 하지만 이러한 필터링 기법을 사용할때 있어 필터를 사람의 직관이나 반복적인 실험을 통해 최적의 필터를 찾아야만 했다. 따라서 합성곱 신경망은 이러한 필터를 일일이 수동으로 고정된 필터를 찾는 것이 아니라 자동으로 데이터 처리에 적합한 필터를 학습하는 것을 목표로 나오게 되었다.
합성곱 신경망 아키텍처
일반적인 신경망의 경우 아래 그림과 같이 Affine으로 명시된 Fully-Connected 연산과 ReLU와 같은 활성화 함수의 합성으로 이루어진 계층을 여러 개 쌓은 구조이다.
ANN의 구조
CNN은 아래의 그림과 같이 합성곱 계층(Convolutioanl Layer)와 풀링 계층(Pooling Layer)라고 하는 새로운 층을 Fully-Connected 계층 이전에 추가함으로써 원본 이미지에 필터링 기법을 적용한 뒤 필터링된 이미지에 대해 분류 연산이 수행되도록 구성된다.
CNN의 구조
위의 CNN의 구조를 조금 더 도식화 하면 아래와 같다.
CNN 구조 도식화합성곱 신경망은 크게 “필터링”과 “분류”의 과정을 거쳐 결과를 출력하게 되는데 달리 말하여 CNN은 이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나눌 수 있다. 특징 추출 영역의 경우 위 그림과 같이 Hidden Layer에 속하는 Convolution Layer와 Pooling Layer를 여러 겹 쌓는 형태로 구성된다.
Convolution Layer는 입력 데이터에 대해 필터를 적용한 후 활성화 함수를 반영하는 필수 요소에 해당하며, 다음에 위치하는 Pooling Layer는 선택적인 Layer에 해당한다. CNN의 마지막 부분에는 이미지 분류를 위한 Fully Connected Layer가 추가된다. 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten Layer가 위치한다.
CNN은 이미지 특징 추출을 위해 입력된 이미지 데이터를 필터가 순회하며 합성곱을 계산하고, 그 계산 결과를 이용하여 Feature Map을 생성한다. Convolution Layer는 필터의 크기, Stride, Padding의 적용 여부, Max Pooling의 크기에 따라 출력 데이터의 Shape이 변경되며, 앞서 언급한 이러한 요소의 경우 CNN에서 사용하는 학습 파라미터 또는 하이퍼 파라미터에 해당한다.
채널(Channel)
이미지를 구성하는 픽셀은 실수이다. 컬러 이미지의 경우 색을 표현하기 위해 각 픽셀을 Red, Green, Blue인 3개의 실수로 표현한 3차원 데이터이다. 컬러 이미지는 3개의 채널로 구성되며, 흑백 이미지는 1개의 채널을 가지는 2차원 데이터로 구성된다. 높이가 64 픽셀, 폭이 32 픽셀인 컬러 사진의 데이터 shape은 (64, 32, 3)으로 표현되며, 높이가 64 픽셀, 폭이 32 픽셀인 흑백 사진의 데이터의 shape은 (64, 39, 1)이다.
3개의 채널로 만들어진 컬러 이미지
합성곱(Convolution)
합성곱 층은 CNN에서의 가장 중요한 구성요소로, 완전연결 계층과 달리 입력 데이터의 형상을 유지한다. 아래와 같이 3차원 이미지를 그대로 입력층에 받으며, 출력 또한 3차원 데이터로 출력하여 다음 계층으로 전달한다.
합성곱 층의 뉴런의 경우 아래와 같이 입력 이미지의 모든 픽셀에 연결되는 것이 아닌, 합성곱 층의 뉴런의 수용영역안에 있는 픽셀에만 연결되기 때문에, 앞의 합성곱층에서는 저수준 특성에 집중하고, 그 다음 합성곱 층에서는 고수준 특성으로 조합해 나가도록 한다[4].
필터(Filter)
위의 합성곱에서 언급한 수용영역을 Convolution Layer에서는 필터 또는 커널이라 부른다. 아래의 그림과 같이 필터는 합성곱 층에서의 가중치 파라미터(W)에 해당하며, 학습단계에서 적절한 필터를 찾도록 학습된다. 이후 합성곱 층에서 입력 데이터에 필터를 적용하여 필터와 유사한 이미지의 영역을 강조하는 특성 맵(Feature Map)을 출력하여 다음 층으로 전달한다.
필터는 이미지의 특징을 찾아내기 위한 공용 파라미터인데, 필터는 일반적으로 (4, 4)나 (3, 3)과 같은 정사각 행렬로 정의된다. 위의 합성곱 처리 절차와 같이 입력 데이터를 지정된 간격으로 순회하며 채널별로 합성곱을 하고 모든 채널(컬러의 경우 3개)의 합성곱의 합을 Feature Map으로 생성한다.
스트라이드(Stride)
필터는 지정된 간격으로 이동하며 전체 입력데이터와 합성곱을하여 Feature Map을 생성하는데, 위의 그림은 채널이 1개인 입력 데이터를 (3, 3) 크기의 필터로 합성곱을 하는 과정을 설명한 것이다. 이 때 지정된 간격을 Stride라고 부른다.
Stride는 출력 데이터의 크기를 조절하기 위해 사용하며, 일반적으로 Stride는 1과 같이 작은 값에 더 잘 동작하며, Stride가 1일 경우 입력 데이터의 Spatial 크기는 Pooling Layer에서만 조절할 수 있다. 위의 그림은 Stride 1과 이후 언급될 패딩(zero-padding)을 적용한 뒤 합성곱 연산을 수행후 Feature Map을 생성하는 예제이다.
패딩(Padding)
패딩은 Convolution Layer의 출력 데이터가 줄어드는 것을 방지하기 위해 사용하는 개념이며, 합성곱 연산을 수행하기 이전에 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미하고, 패딩에 사용할 값은 하이퍼파라미터로 결정이 가능하지만 보통 zero-padding을 사용한다. 패딩은 또한 주로 합성곱 층의 출력이 입력 데이터의 공간적 크기와 동일하게 맞춰주기 위해 사용하기도 한다.
Pooling Layer
풀링 레이어의 경우 컨볼루션 레이어의 출력 데이터를 입력으로 받아서 출력 데이터에 해당하는 Feature Map(=Activation Map)의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용된다. 풀링 레이어를 사용하는 방법에는 크게 Max Pooling, Average Pooling, Min Pooling이 있다. 아래의 그림은 Max Pooling과 Average Pooling의 동작 방식을 설명하며, 일반적으로Pooling의 크기와 Stride를 같은 크기로 설정하여 모든 원소가 한 번씩 처리되도록 설정한다.
풀링 레이어는 컨볼루션 레이어와 비교하여 다음과 같은 특징이 존재한다.
학습 대상 파라미터가 없음
풀링 레이어를 통과하면 행렬의 크기 감소
풀링 레이어를 통해서 채널 수 변경 없음
이때 필터링을 거친 원본 데이터를 피처맵(Feature Map)이라고 하며 필터를 어떻게 설정할지에 따라 피처맵이 달라진다.