사람의 눈을 통해 들어오는 것을 뇌는 고해상도의 영상을 받아들인다고 착각한다. 시신경이 뇌에 전달하는 정보는 대상의 윤곽, 그리고 흥미로운 몇몇 부분에 대한 단서뿐이다. 시신경은 뇌에 정보를 전달할 때 병렬식으로 여러 출력 채널(10개~12개)들을 통해 연속적으로 정보를 전송한다. 각 채널은 주어진 장면에 대한 최소한의 정보만을 전달한다. 때문에 사실은 낮은 해상도의 영화를 보는 것과 같다. 피질의 기억에 의존해 그 정보를 해석함으로써 세상에 대한 환각을 구축하는 것이다. 즉, 세상을 명확히 바라본다 생각하지만 실제로 우리가 받아들이는 감각은 시공간적 단서들, 윤곽에 대한 정보들 뿐이다. 모든 정보는 12개 가량의 그림들 속에 담겨 있고, 이들을 재구성함으로써 세상의 영상을 재구성하는 것이다. (정확히는 눈은 뇌와 직접적으로 연결된 감각 기관으로 사실상 뇌와 동일(뇌의 확장)하다고 볼 수 있음)

 

 

Reference

[1] 《Eye strips images of all but bare essentials before sending visual information to brain》

[2] https://www.berkeley.edu/news/media/releases/2001/03/28_wers1.html

 

신경줄기세포(Stem Cell)

(개념) 아직 분화가 일어나지 않은 상태의 세포로서, 여러 종류의 조직으로 분화할 능력을 가진 세포

 

세포조직

(개념) 특정한 형태나 기능을 가진 세포가 모여있는 세포의 집합

(예시) 물관의 세포는 연속적으로 배열된 긴 관의 형태로 존재하므로, 물이 능률적으로 잘 통과할 수 있음 

(특징) 어떤 기능을 가진 세포가 모이면 그 기능이 더욱 잘 완수될 수 있음

 

대뇌 피질(Cerebral cortex)

(개념) 대뇌 반구 바깥쪽(대뇌 표면)에 있는 여섯 겹의 얇은 층으로 이루어진 신경세포들의 집합이다.

(역할) 대뇌피질은 부위에 따라 기능이 다른데 각각 기억, 집중, 사고, 언어, 각성 및 의식 등의 중요기능 담당

(특징) 대뇌 안쪽부분과 비교해 어두운 색을 띠고 있어 회백질(gray matter)라고 부르며 반대로 안쪽은 백질(white matter)라고 부름

 

 

회백질(Gray matter)

(개념) 회색질(灰色質)은 척추동물의 중추신경계에서 신경세포가 모여있어 육안으로 관찰할 시 회색으로 보이는 부분이다. 대뇌피질이라고도 불린다. 

(구성) 신경세포체(cell body)와 모세혈관으로 구성됨.

 

백질(white matter)

(개념) 대뇌의 안쪽을 의미한다. 대뇌의 바깥인 대뇌피질은 회색을 띠어 회백질이며, 안쪽은 흰색을 띄어 백질이다.

 

 

뇌간(brainstem)

(개념) 뇌줄기로도 불리며, 대뇌 반구와 소뇌를 제외한 나머지 부분을 총칭하는 용어. 해부학적으로 대뇌와 척수 사이에줄기처럼 연결된 뇌의 부분

(특징) 의식적인 여러 활동이나 조절에 관계된 대뇌 반구나 소뇌와 달리 무의식적 활동(반사적 운동, 내장 기능)을 담당

 

섬유

(개념) 부정적인 감정 자극에 민감히 반응하는 부위

 

오름 섬유

(개념) 소뇌에 존재하는 세 가지 주요 신경 종류 중 하나이며, 이 뉴런은 소뇌에 운동 능력 학습에 관한 신호를 제공

 

과립 세포

(특징) 뉴런들 중 가장 크기가 작음. $1mm^2$안에 6,000,000개가 있다.

 

하측두피질(inferotemporal cortex)

(부위) 뇌의 측면에 있는 측두피질의 하부에 위치

(역할) 얼굴 인식을 담당

(특징) FFA(fusiform face area)가 얼굴 인식할 때 높게 활성화 되는 것으로 관측됨 → 얼굴과 사물 처리에 신경기제가 각각 다름

 

방추세포

(특징)

  • 감정적 상황을 다루고 도덕 판단에 관련된 것으로 추정되는 특별한 세포로 매우 적은 수인 약 80,000개 가량 존재 (좌반구 35,000개, 우반구 45,000개)
  • 인간과 몇몇 거대 유인원의 뇌에만 있음 (고릴라 16,000개, 보노보 2,100개, 침팬지 1,800개)
  • 신생아는 방추세포가 없음. 출생 후 4달 무렵부터 생겨나 1~3세 사이에 늘어남 → 도덕적 문제를 다루는 능력이나 사랑 같은 고차원적 감정에 대한 인식은 이 시기에 발달

 

아교세포(neuroglia)

(개념) 뉴런이 만들어내는 것으로 외래 물질을 둘러싸 뇌를 보호하는 역할을 하는 세포

(특징) 뇌 속에 가장 많이 분포되어 있는 세포이다. 

(크기) 신경 아교세포는 신경 세포의 1/10 크기

(수량) 신경 세포의 약 10배로 추정

 

미세아교 세포(microglia)

뇌와 척추 전역에 분포해있는 세포로, 신경 아교 세포의 한 형태이다. 모든 세포 중 약 10~15%를 차지한다. 건강한 상태에서 정상적인 뇌 기능에 핵심적인 역할을 한다.

 

 

유모 세포

(개념) 소리 진동을 전기 신호로 변환해주는 세포로 달팽이관에 존재.

 

동방결절 세포

(개념) 심장박동을 가능하게 하는 전기를 스스로 발생시키는 세포.

(원리) 이완기에 세포막전위가 외부 자극 없이 서서히 탈분극할 수 있는 고유 능력을 갖고 있기 때문

 

 

이온채널

(개념) 신경세포를 포함하여 모든 종류의 세포 안에 있는 세포막 관통단백질

(특징) 이온수송체와 더불어, 세포의 이온 항상성 조절에 기여 + 개폐조절 및 기전을 통한 세포막의 흥분성 조절에 기여

 

편도체(Amygdala)

(개념) 감정에 관여하고 공포나 불안에 대한 학습에 관여하는 기관

(위치) 해부학적으로 심부변연계안에 위치함

(특징) 제거되면 공포/겁이 사라짐 --> 생존에 불리해짐

 

경구개직류전기자극

(개념) 신경세포의 활성도를 조절가능하게 하는 방법

(활용) 뇌전증(간질)이나 조현병, 알콜중독/마약과 같은 질병에 대해 음극 전극을 붙여 신경세포 활성도를 낮추는 방법으로 치료하는 방법

 

 

전두엽알파비대칭성지표

(개념) 좌측 전두엽과 우측 전두엽에서 보이는 알파파의 차이

(특징) 부정 감정이 많으면 좌반구 알파 활동이 증가하고 긍장 감정이 많으면 우반구 알파 활동이 증가한다.

 

압전체

형태가 변하면서 전기가 발생하는 물질

 

NIRS

(개념) 근적외선 분광법

(원리) 산화 헤모글로빈 농도와 위치에 따라 빛의 산란 정도가 달라짐. 즉 적외선을 몸에 비치면 반대편에서 측정되는 빛의 양이 달라짐.

(활용) 위와 같은 원리로 심장박동에 따라 주기적으로 변하는 맥파라는 신호를 얻을 수 있음

 

 

채널로돕신2 단백질

(개념) 해조류로부터 추출한 단백질

(특징) 바이러스를 통해 주입하고 특정 파장의 빛을 쬐주면 신경세포 활성화가 일어남 

 

 

마이크로파빔

(특징) 직진성이 강하고 이를 통해 생겨난 에너지를 통해 신경세포 자극 가능

 

전전두엽피질

(개념) 뇌 전체를 관장하는 곳으로 컴퓨터로 비유하면 CPU와 같음.

(특징) 전전두엽피질이 증가하면 변연계가 억제. 억제되면 감정이 줄어들고 이성의 기능이 높아짐

 

광수용체

망막에 있는 것으로 빛을 전기신호로 바꿔주는 역할을 통해, 보고 있는 것을 뇌가 이해할 수 있도록 도와줌

 

뇌파

P300 (Positive300)

(개념) 300 밀리초 이후에 나타나는 양의 값을 가지는 뇌파.

(특징) 전두엽 영역 부근에서 나타나며 이를 통해 개개인의 인지 능력을 일부 알아 낼 수 있음

300 밀리초 전에 일어나는 반응을 유발전위(Evoked Potential)라고 하며, 300밀리초 후에 일어나는 반응을 사상관련전위(Event Related Potential, ERP)라고 한다. 

 

 

정상상태청각반응(Auditory Steady-State Evoked Responses, ASSR)

(개념) 특정 주파수로 진동하는 소리를 들려줄 때 같은 주파수로 진동하는 뇌파가 증가하는 현상

(특징) 모든 주파수에 반응하지 않으며 유독 37Hz ~ 40Hz 사이의 주파수에 반응함. 보통 측두엽의 청각피질에서 소리를 처리하지만 ASSR은 뇌 깊숙히 있는 뇌간에서 반응함.

 

정상상태시각유발전위(Steady-State Visual Evoked Potential)

(개념) 눈을 감고 왼쪽 오른쪽 시각 자극 중 하나에 지붕했을 때 달라지는 뇌파.

 

 

질병

뇌졸중

(개념) 혈관이 막혀 산소 공급이 원활하게 되지 못해 뇌 일부가 망가지는 질환

(발병원인) 잘못된 식습관, 술, 담배, 스트레스로 발병

 

하지불안증후군

(개념) 휴식 중에 다리에 근질거리는 이상 감각과 초조함이 느껴지고 다리를 움직이고 싶은 충동이 일어나는 질환

(원인) 도파민 부족으로 기인

+ 도파민은 신경전달물질 중 하나로서 만약 도파민이 감소하면 인지기능이 저하된다.

 

루게릭병(ALS)

(개념) 근위축성측색경화증

 

뇌전증(=간질)

(개념) 신경세포의 연결이 과도하게 일어나 발작으로 이어지는 질병

(특징) 

 

 

 

 

Reference

[1] https://ko.wikipedia.org/wiki/뇌줄기

[2] https://ko.wikipedia.org/wiki/대뇌_피질

[3] https://blog.daum.net/petrus91/13734656

[4] https://ko.wikipedia.org/wiki/미세_아교_세포

 

 

사용 배경

객체지향 프로그래밍의 중요한 개념 중 하나는 데이터 은닉이며, 필요에 따라 특정 정보에 대한 은닉을 위해 접근 제한자를 사용한다.

 

 

접근 제한자

접근 제한자는 크게 public, protected, private 세 종류가 있다.

 

public

  • 외부 클래스가 자유롭게 접근하여 사용 가능
  • 연산자를 이용하여 아무곳에나 액세스 가능

 

private

  • 오직 클래스 내부에서만 접근 가능하며 클래스 외부의 객체나 함수에서 직접 접근 불가
  • 클래스 내부의 멤버 함수 또는 friend 함수만 클래스의 private 멤버에 접근 가능.

 

protected

  • 클래스 외부에선 protected 멤버에 접근할 수 없음. 하지만 해당 클래스의 하위 클래스에서는 접근할 수 있음.

* 하위 클래스: ex) 파생 클래스, 자식 클래스

 

 

 

* C++ 클래스 내에 멤버에 대한 접근 제한자를 두지 않으면 기본적으로 private임 (자바는 public이 default)

* C/C++ 구조체 멤버에 대한 기본적인 접근 제한자는 public임

 

 

Reference


[1] https://yeolco.tistory.com/115

[2] https://saack.tistory.com/46

 

 

 

진정한 성평등이란 무엇인가?

이 책의 핵심은 평범 착한 남성도 성평등의 인식의 필요성을 느끼고, 남녀평등을 위해 모든 남성이 여성에게 책임전가 할 것이 아니라 끊임없이 맨박스를 부수는 삶을 살아야 한다는 것이다.

이 책은 친구의 선물로 인해 읽게 된 책이다. 여행 갈 때 오고 가는 버스안에서 비교적 무난하게 읽을 수 있었던 책이다. 처음 선물 받았을 때는 친구에게 비친 내 모습에서 성평등에 대해 부족해 보이는 부분이 있는가 생각이 들었다. (아무래도 그래 보였으니 선물해주었지 싶다). 읽으며 생각이 조금씩 달라지게 되었는데, 단순히 페미니즘을 남녀평등으로만 알고 있던 내게 조금 더 올바른 인식을 심어주었기 때문이다.

제목인 "맨박스"라고하는 것은 남자다울 것을 요구하는 일종의 외부요인을 통칭하는 것으로 저자는 이 맨박스를 부수는 삶을 살아야 한다고 한다. 저자는 대다수의 남성들이 집단적인 강요를 통해 남자다움의 정의를 인식하고 있다는 것을 꼬집는다. 또한 성평등을 이루고 있지 못한 주된 이유로 크게 두 가지를 꼽았는데, 첫 번째는 남성들이 여성들의 체험에 관심을 갖지 않는 관심 결핍이 여성에 대한 폭력을 용인하는 문화의 주된 원인이며, 두 번째는 여성들의 삶에 수반되는 고통을 공감하려는 남성의 의지가 일정 수준을 넘어서지 못하는 것이라고 한다.

선한의도를 가진 남성이라 해도 많은 여성들의 삶에 영향을 미치는 문제를 무시로 일관할 수 없는데, 이는 궁극적으로 그들이 사랑하는 여성들에게도 영향을 미칠 문제이기 때문이라고 한다. 때문에 남성들이 먼저 여성 폭력 등과 같은 문제에 전적으로 책임을 인정하고 해결에 적극적으로 나서야 한다고 말한다. 그래야만 진정한 성평등이라는 사회적 변화로 접어들수 있기 때문이다.

“여성들은 보호받기를 원하지 않는다. 단지 남성들이 폭력을 쓰지 않기를 바랄 뿐이다." - 토니포터

별점: ⭐⭐⭐

1. 양자역학 개요

양자역학이란 미시계의 현상을 연구하는 물리학의 한 분야이다. 물리학은 크게 고전역학과 양자역학으로 나눌 수 있으며 양자역학은 고전역학으로 해석하지 못하는 현상을 설명한다. 양자역학에서 사용되는 요소적인 개념 중 하나는 이중성이 있다. 이중성의 특징은 입자성을 띠면서 동시에 파동성 또한 띤다는 것이다. 입자의 경우 실체가 있고, 운동량이 있으며 이산적이라는 특징을 가진다. 또한 입자의 총 물리량 = 개별 입자의 물리량 총합이라는 특징을 가진다. 반면 파동의 경우 실체가 없는 것이며 그렇기에 운동량 또한 없으며, 연속적이라는 특징을 가진다. 파동의 총 세기는 개별 파동이 갖는 세기의 단순 합과는 다른데 이는 합성파를 이룰 때 파동에 간섭이 발생하기 때문이다. 간섭은 크게 두 종류로 보강간섭과 상쇄간섭이 있다. 보강간섭은 파동이 간섭에 의해 더욱 커지는 것을 의미하며 상쇄는 파동이 간섭에 의해 축소되는 것을 의미한다. 이러한 이중성에 대한 예시로는 물과 물결, 소리와 음파와 같다. 물과 소리의 경우 매질이 있어, 매질의 진동 모습을 통해 파동의 모양을 관찰 가능하며, 파동 관련 모든 물리량을 측정 가능하다.

 

양자역학이라는 개념을 창시한 사람은 막스 플랑크이다 (용어 창시는 막스 보른). 1899년 플랑크 상수를 발견하였고, 대응원리라고 하여 플랑크 상수에서 0으로 극한을 취할 경우 양자역학에서 고전역학으로 수렴한다는 사실을 알아냈다. 이를 통해 1918년 노벨 물리학상을 받게되었다. 이러한 양자역학의 형성기에는 두 갈래로 나뉘었다. 보어의 원자모형 → 대응원리 → 행렬 역학이 첫 번째였고 두 번째는 아인슈타인의 광자 → 루이 드브로이의 물질파 → 파동역학이다. 하지만 후에 사실은 같은 내용임이 밝혀져 통일되었다.

 

 

2. 양자역학의 대표적인 실험

2.1 이중 슬릿 실험

가장 첫 번째로 유명한 실험으로 알려진 영의 이중슬릿 실험이 있다. 현대 물리학자 리처드 파인만은 이 실험에 양자역학의 모든 것이 들어있다고 하였다. 이중슬릿 실험은 아래와 같다.

전자총을 통해 전자를 쏘게 되면 기존의 입자성을 띤다고 알려진 전자는 이중슬릿을 통과하면서 전자들이 파동처럼 간섭을 일으키며 결과적으로 스크린에 간섭무늬가 만들어진다. 입자는 파동이 아니기에 간섭을 일으킬 수 없다. 하지만 위의 실험은 명백히 전자는 파동성을 띤다는 것을 의미하는 것을 알 수 있었다. 그렇다면 과연 어떻게하여 스크린에 간섭무늬를 생기게 하는가를 확인하기 위해 이중슬릿에 전자 검출기를 달고 확인하였다.

 

하지만 결과는 이전과 달리 간섭무늬가 사라졌다는 것을 확인할 수 있다. 이는 단순히 관측을 하거나 관찰자가 있다는 이유만으로 전자는 다시 입자성을 띠게 된다는 것이다. 다시 말해 관측 여부를 기준으로 전자는 파동성을 띠기도 하며 입자성을 띠기도 한다는 것이다. 경이로운 실험이 아닐수가 없다.

 

2.2 콤프턴 산란 실험

두 번째는 콤프턴 산란 실험이 있다. 이는 빛의 입자성을 지지할 수 있는 실험이다. 결과적으로 빛이 다른 입자를 쳐서 튕겨낸다는 현상을 확인하였고, 빛 자신도 튕겨남을 확인하였다.

 

 

위 그림을 그대로 풀어쓰자면, 충돌이 발생하기전에는 입사하는 광자와 충돌전 정지된 전자가 있다. 이 때 입사하는 광자가 충돌전 정지된 전자에게 충돌할 경우 정지했던 전자는 충돌로 인해 산란하는 전자가 될 것이며, 입사하던 광자는 정지된 전자와 충돌하여 산란하는 광자가 될 것이다. 여기서 콤프턴이 밝힌 것은 빛의 입자성이다. 이는 입사하는 광자와 산란하는 광자의 파장의 크기의 차이를 보면 알 수 있다. 에너지는 파장과 일종의 반비례 관계($E = {hc\over \lambda}$)를 가진다.

($h$ = 플랑크 상수, $c$ = 빛의 속도, $\lambda$ = 빛의 파장)

 

결과적으로 광자는 전자와의 충돌로 인해 파장이 늘어났다. 즉, 충돌로 인해 에너지가 줄었다는 것이다. 만약 이것이 빛이 파동성을 띠었다면 산란하기 전과 후에 파장에는 아무런 변화가 없어야 한다. 하지만 콤프턴 실험은 이를 역설하며 위를 콤프턴 효과라고 부르기도 한다.

 

2.3 데이비슨-거머 실험

데이비슨-거머의 실험은 드브로이의 가설을 기반으로 한다. 즉, 만약 입자와 파동의 이중성이 있다면, 전자도 파동성을 가진다는 것이다. 실험은 크게 2가지 제약 조건을 줌으로써 실행이 되었다. 첫 번째는 슬릿 스위칭이라는 것을 두어 하나의 슬릿만 열고 위와 같이 전자를 쏜 뒤 결과를 확인하였다. 결과는 $P1 + P2 = P12$ 분포 곡선이 나타났다. 이 분포 곡선은 단순히 개별 입자의 물리량의 합이라는 의미를 가진다. 즉 전자는 입자성을 띤다는 것이다. 두 번째는 슬릿 스위칭 대신 슬릿 두 개를 모두 열어보았다. 그 결과 스크린에 간섭무늬가 나타났으며, 분포 곡선이 $P1 + P2 \neq P12$임을 확인하였다. 이는 전자는 파동의 형태를 띤다는 것으로 분포가 불규칙하다는 것을 의미한다.

 

데이비슨-거머의 실험은 입자와 파동의 이중성이 자연의 본질이라는 것을 의미한다. 또한 실험을 통해 모든 소립자와 원자는 입자와 파동의 이중성이라는 특징을 가진다는 것을 알아내었다. 더불어 자연 현상을 기술하기 위해 파동과 입자라는 논리적으로 양립 불가능한 개념이 필요로 하다는 것이다. 논리적 모순인 입자와 파동을 동시에 볼 수 없고, 사물의 실체는 논리적으로 양립할 수 없는 두가지 성질을 갖고 있다는 것이다. 이외의 실험으로 원자뿐만 아니라 50,000배 큰 풀러렌도 파동성을 가짐을 확인이 되었다. 최근에는 생채 분자에서도 파동과 입자의 이중성을 띤다는 것을 밝혀지기도 했다.

 

3. 양자역학의 특징

3.1 관찰(상호작용)과 창조

양자역학의 현상은 예외 없이 입자는 위치를 확인하지 않으면 동시에 여러 곳에 존재한다는 것이다. 위치를 확인하면 반드시 꼭 한 곳에만 존재하게 된다. 입자는 관찰 이전에 입자로 존재하는 것이 아니라 관찰하는 순간 입자의 형태가 된다. 다르게 말해 입자를 관측하기 이전에는 어떤 공간에 입자가 위치할 확률을 표현하는 파동함수로 있다가 관측(상호작용)하는 순간, 계가 교란되고 파동함수가 붕괴되어 한 곳에 위치하는 입자를 관측하게 되는 것이다. 관찰과 무관하게 독립적으로 실재하는 물리량은 없다. 소립자의 위치도 측정 과정에서 만들어진다. 따라서 관찰 이전에는 위치 속성도 없다.

 

3.2 슈뢰딩거의 파동 방정식

이러한 양자역학은 슈뢰딩거의 파동 방정식에 따라 행동한다. 또한 슈뢰딩거의 파동 방정식을 근사시킨다면 뉴턴의 방정식이 된다. 이를 두고 고전역학이 수렴하면 양자역학이 된다고 표현하며, 둘은 근사이론 관계에 있다고도 표현할 수 있다. 슈뢰딩거의 방정식을 풀면 물리계의 성질을 완전하게 알 수 있다는 특징을 가진다. 슈뢰딩거의 방정식을 풀게 되면 파동함수의 정보를 알 수 있고, 파동함수를 알면 주어진 물리계에 관한 모든 물리적 정보를 얻을 수 있다. 하지만 시간적으로 불변인 물리계가 아닐 경우 임의의 물리계를 기술하는 파동함수를 얻기 어렵다.

 

3.3 상보성의 원리와 불확정성의 원리

양자역학의 기본원리로는 크게 상보성의 원리와 불확정성 원리가 있다. 먼저 상보성의 원리는 보어가 창시한 개념으로, 자연현상은 반드시 짝이되는, 대립되는 개념을 함께 사용해야만 사물을 제대로 기술할 수 있다는 것이다. 빛의 이중성과 같은 개념을 자연의 관점에서 바라보는 것이다. 상보성의 원리에 의하면 자연을 이해하기 위해서는 대립되는 개념을 함께 사용해야만 사물을 제대로 기술 할 수 있다. 즉, 미시세계를 이해하기 위해서는 거시세계를 함께 알아야만 사물을 올바르게 기술할 수 있다. 질량이나 에너지, 위치, 운동량과 같은 개념은 거시적인 세계를 기술하는데 적합한 용어다. 미시적인 세계를 기술하는데 적합한 용어와 개념은 현재 부재한 상태다. 따라서 거시 개념을 통해 미시 개념을 이해하기에는 인식의 부재가 따른다고 볼 수 있다.

 

상보성의 원리는 불확정성원리를 일반화시킨 것이다. 불확정성원리는 위치와 운동량의 관계에서 전자가 움직이는 위치를 알고자 한다면 운동량을 알 수 없고, 전자의 운동량을 알고자 한다면 위치를 알 수 없는 것을 의미한다. 상보성의 원리는 보다 깊은 철학적 의미를 지녔으며, 앞서 언급한 인식의 한계에 대한 인식론적 고찰이 담긴 것이 특징이다. 즉, 상보성의 원리는 불학정성원리에 철학적 의미를 부여한 것이며, 불확정성 원리를 이해하는 인식론적 틀을 마련했다 볼 수 있다. 

 

3.4 상태의 중첩과 관찰

상태의 중첩이란 관찰이 있기 전, 미시세계의 존재는 모든 가능한 모든 상태에 '동시에' 존재한다는 것이다. 관찰시 파동함수가 붕괴되면서 관찰자는 단 하나의 고유상태를 확인할 수 있다. 양자이론은 이런 상태의 중첩을 단지 확률적으로만 말할 수 있다. 따라서 객관적 실재는 없다. 

 

4. 코펜하겐 해석

코펜하겐의 핵심 사상은 크게 3가지를 기반으로 하며 이는 확률파의 개념, 불확정성 원리, 상보성의 원리이다. 이 3가지는 양자역학의 철학적 기반을 마련했다 볼 수 있다. 코펜하겐해석은 막스보른이 슈뢰딩거의 방정식의 해를 확률파로 해석하자고 제안한 것을 기반으로 하였고, 보어가 이 코펜하겐해석을 주도하였다.

 

4.1 확률파

확률파란 수학적인 표현으로, 파동함수를 의미한다. 파동함수는 복소수가 포함되어 있다. 복소수는 실수와 허수로 구성되어 있고 특징은 추상적인 의미를 가진다. 확률파의 의미적 표현으로는 "관찰자가 입자를 발견할 확률"이 공간상에 파동의 형태로 퍼져있다는 것이다. 일반적으로 잘못알려진 부분은 입자가 존재할 확률이 파동의 성질을 가지고 널리 퍼져 있다는 것인데 이는 올바르지 않은 표현이다. 이런 확률파의 문제점은 물리량을 측정하는 관찰자가 무엇인가?와 같은 문제점이 제기된다. 직접적으로 관찰이 불가능한데 이는 매질이 진동하지 않기 때문이다. 따라서 확률파는 추상적인 존재로서 앞서 언급한, "관찰자가 입자를 발견할 확률"을 나타낸다. 이런 확률파는 슈뢰딩거의 방정식의 해를 해석하는데 사용된다.

 

4.2 불확정성 원리

만약 관찰자가 관찰(측정)을 하게 된다면, 필연적으로 관찰대상을 교란시키게 된다. 이는 미시세계의 물리량을 측정하는 정밀성의 한계에 기반한다. 이러한 한계를 해결하기 위해 도입한 것이 불확정성 원리이다. 불확정성 원리는 측정이 계에 미치는 영향을 정량적으로 분석하며, 간단한 부등식으로 나타낸다. ($\Delta x \Delta p \geq {h \over 2}$)

 

수식이 의미하는 바는 $\Delta x$는 위치의 불확정도, $\Delta p$는 운동량의 불확정도를 나타내며, $h$는 플랑크 상수이다. ($h$= $6.63 * 10^{-34}$ joul sec) 

 

간단한 해석을 하자면 정밀하게 측정하여 입자의 위치의 불확정도와 운동량의 불확정도를 아무리 작게 만든다 하더라도 둘을 곱한 값인 $h\over 2$보다 작게 만들 수 없다는 것이다. 또 다르게 해석하면 입자의 위치를 정밀하게 측정하여 그 불확정도를 0으로 만든다면 입자가 가진 운동량의 불확정도가 무한대로 커진다는 것을 의미한다. 

 

불확정성 원리는 위치와 운동량에서만 위와 같은 관계가 성립하는 것이 아니라 에너지와 시간에서도 동일한 관계가 성립한다. 따라서 정밀한 시간을 측정하여 시간의 불확정도가 0이 된다면 에너지는 무한으로 발산하게 된다. 에너지가 무한으로 발산한 다는 것은 무엇을 내포하고 있을까? 바로 무에서 유가 탄생하는 과정이다. 에너지가 발산하게 되면 $E=mc^2$에 의해 질량으로 바뀌게 된다. 에너지가 무한에 발산하니 질량인 $m$또한 마찬가지 일것이다. 

(관련 내용: https://roytravel.tistory.com/120?category=1006769) 

 

4.3 상보성 원리

상보성의 원리에 대한 내용은 3.3에서 언급한 내용으로 갈음한다.

 

코펜하겐 해석 특징

코펜하겐 해석의 특징은 객관적 실재를 부정한다는 것이다. 이유는 물리량은 측정 과정에서 만들어지기 때문에 어떤 물리량을 얻을지는 확률론적으로 결정된다. 관찰과 무관하게 독립적으로 실재하는 물리량은 없다. 이러한 특징을 적용하면 만약 두 사람이 같은 물리계를 관찰하더라도 미시세계에서는 같은 상태를 보는 것이 아니게 된다. 참으로 신기하지 않을 수 없다. 같을 것을 바라본다 하여도 같은 것이 아니라고 하니. 코펜하겐 해석은 결정론과 확률론의 조화로 세상을 설명한다. 그 이유는 슈뢰딩거의 방정식에 대한 이론은 결정론을 따르지만 실험 결과는 확률론을 따르기 때문이다. 이러한 특성 때문에 코펜하겐 해석은 불교의 중도와도 닮아 있다고하여 불교 철학과 조화를 이루는 면이 있다고 한다.

 

5. 파동함수 붕괴

파동함수가 붕괴된다는 것은 입자가 발견되면 존재 확률이 즉각적으로 1이 된다는 것이며 나머지 공간에 존재 확률이 0이 되는 것이다. 측정 전에는 입자의 위치를 말할 수 없다. 그 이유는 관찰이 없으면 물리 속성을 갖지 않기 때문이다. 관찰 대상이 없으면 관찰 대상도 없다. 다시 말해 관찰 전에는 단지 존재할 확률만 가질 뿐 실재하지 않는 다는 것이다. 이러한 파동함수의 특징은 비국소성을 띤다는 것이다. 비국소성이랑 시공간의 제약을 무시하는 것으로 극단적인 예로 우주의 양 끝에서 일종의 정보(정확히는 정보 전달X)를 주고받을 수 있다는 것이다. 하지만 문제점은 정보는 빛보다 빠를 수가 없다는 데 있다. 

 

6. 고유 상태

고유상태란 물리계의 상태를 나타내는 측정 값이, 측정 전후를 통해 변하지 않는 상태를 의미한다. 즉, 영원히 변하지 않는 어떤 상태를 말한다. 하지만 고유 상태의 한계는 세상에 이런 상태가 없다는 것이다. 고유상태는 우주가 '존재하는 어떤 것'들로 구성되어 있다고 착각하게 만든다. 때문에 우주의 참모습을 기술하기에 적합한 개념이라 볼 수 없다. 하지만 사람의 사물 인식 방식에 꼭 들어 맞는 기술 방식이라는 것이다. 세상에 무언가 존재하고, 존재하는 것은 고유의 특성이 있다는 믿음을 갖고 세상을 보기 때문이다. 이를 수학적으로 표현한 것이 고유벡터, 고유함수, 고유값이다. 슈뢰딩거의 방정식에 의거하면 사물이 A라는 고유상태와 B라는 고유상태를 가질 수 있다면 A+B의 결합된 중첩 상태도 가질 수 있는 것이 특징이다.

 

7. Reference

[1] https://www.ibs.re.kr/scc/lounge/malangScienceView.do?scienceLoungeNo=18043&dtaTy=004

[2] https://news.samsungdisplay.com/28429/
[3] https://www.dongascience.com/news.php?idx=32280

[4] https://allgo77.tistory.com/11 

[5] https://news.samsungdisplay.com/18698/

'Science > 물리학' 카테고리의 다른 글

[물리학] 무에서 유가 창조 되는 과정  (0) 2021.09.30

 

About SSH

AWS나 GCP와 같은 클라우드 플랫폼을 사용하다보면 주로 SSH를 통해 접속하고 작업을 진행하게 된다. SSH 사용에 대한 이해는 암호학에서 나오는 공개키와 비밀키의 관계를 이해하는 것이 핵심이다. 본 포스팅에서는 Windows 10과 Windows Server 2016간의 예시를 통해 이러한 SSH의 공개키와 비밀키가 어떻게 사용되는지를 설명하고자한다.

 

 

SSH 설치

Windows Server 2016의 경우 Windows 10과 달리 기본적으로 내장되어 있는 ssh가 없어서 별도의 OpenSSH와 같은 어플리케이션을 설치해주어야 한다. Winodws 10의 경우에도 빌드 버전에 따라 내장된 ssh가 없을 수 있으나 만약 없을 경우 설정 > 앱 > 선택적 기능 > 기능 추가 > OpenSSH 서버를 선택하여 설치하면 된다. OpenSSH에 대한 설치 과정과 환경 설정은 본 포스팅에서는 언급하지 않는다.

 

 

 

키 생성

Windows 10 : Client
Windows Server 2016 : Server

만약 Local인 Windows 10에서 Remote인 Windows Server 2016에 SSH를 접속하고 싶을 경우 접속을 위해 키 페어를 생성해야한다.

키 페어를 생성하여 SSH 통신을 하기 위해서는 실제로 작업을 진행하는 Local에서 공개키/비밀키 쌍을 생성하여 공개키를 Remote에 두어야 한다.

키 페어를 생성하기 위해 아래와 같이 ssh-keygen -t rsa 명령을 사용하면 어떠한 이름의 키 페어를 생성할 것인지를 확인하며 입력 없이 Enter를 누르게되면 default 이름인 id_rsa로 설정된다. (-t 옵션은 type을 의미하고 추가적으로 -C 옵션은 comment, -b 옵션은 bit 수를 지정이 가능. default bit수는 2048임)

 

 

이후 비밀키를 특정 passphrase로 암호화 할 것인지에 대해 확인하며 입력 없이 Enter를 누르게 되면 키 페어가 생성된다.

 

 

생성된 키 페어는 사용자 폴더 하위의 .ssh 폴더에 생성되며 아래와 같이 비밀키인 id_rsa와 공개키인 id_rsa.pub이 생성된다.

 

 

생성된 키 페어 중 공개키인 id_rsa.pub을 remote로 작업할 Windows Server 2016의 .ssh 폴더 하위에 아래와 같이 authorized_keys에 추가해주어야 한다.

 

 

authorized_keys가 없을 경우 파일을 생성하고 id_rsa.pub의 데이터를 동일하게 복붙해주면 된다.

 

SSH 사용

SSH를 사용하기 위해서는 3가지 파일이 필요하다.
Local : id_rsa, config
Remote : authorized_keys

이 중 id_rsa와 authorized_keys의 경우 키 페어 생성을 통해 얻을 수 있는 파일이며, 마지막으로 config 파일이 필요한데 별도로 존재하지 않을 경우 아래와 같이 작성해주어야 한다.

 

 

Host 명의 경우 추후 ssh 명령을 사용할 때 축약하여 사용할 수 있는 것으로 임의 설정이 가능하다. HostName의 경우 접속하고자 하는 remote의 IP이며, User의 경우 remote 환경의 사용자 계정 이름을 의미한다. 여기서는 Windows Server 2016의 사용자 계정인 Administrator라 볼 수 있다.

이후 중요한 것은 config 파일의 사용 권한 설정이다. 일반적으로는 아래와 같이 3개의 보안 주체가 있는 것을 확인할 수 있을 것이다.

 

 

여기에서 모든 보안 주체에 대해 상속을 사용하지 않음을 설정해주고 아래와 같이 모두 제거를 진행하여야 한다.

 

 

이후 아래와 같이 ssh [User]@[IP]와 같은 명령어를 작성할 경우 비밀번호 입력창이 뜨는 것을 확인할 수 있다.

 

 

이후 remote로 접속하는 비밀번호를 입력해주면 아래와 같이 접속이 완료된 것을 확인할 수 있다.

 

 

만약 비밀번호 없이 바로 접속하고 싶다면 아래와 같이 -i 옵션을 통해 비밀키인 id_rsa를 입력해주면 비밀번호 없이 remote로 접속이 가능하다.

 

 

다만 비밀번호 없이 바로 접속하기 위해서는 remote 측에서도 아래와 같이 OpenSSH가 설치된 C:\ProgramData\SSH의 폴더에서 authorized_keys 파일을 추가해주어야 비밀번호 없이 client에서 -i 옵션을 사용하여 접속이 가능하며, authorized_keys 파일은 sshd_config 파일의 맨 아래에서 경로를 설정해줄 수 있다.

 

 

만약 remote에 있는 파일을 실행하고 싶을 경우 아래와 같은 명령을 통해 파이썬 파일을 실행할 수 있다.

 

 

또한 scp 명령을 통해 remote와 local간의 데이터를 주고 받을 수 있는데 remote로부터 local로 데이터를 가져오는 명령은 다음과 같다.

 

 

아래와 같이 파이썬 스크립트를 통해서도 SSH 통신으로 명령을 내리고 결과를 받아오는 것이 가능하다.

 

 

사용한 파이썬 코드는 다음과 같다.

 

# -*- coding:utf-8 -*-
import paramiko as paramiko
from paramiko import AutoAddPolicy

server=""
username="Administrator"
password = ""
cmd_to_execute = "cd C:\\Users\Administrator\\Desktop\\test\\ & python test.py & dir"

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(server, username=username, password=password, sock=None, port=22)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

err = ''.join(ssh_stderr.readlines())
out = ''.join(ssh_stdout.readlines())
final_output = str(out)+str(err)
print(final_output)

 

Reference

[1] How to Use SSH in Windows: 5 Easy Ways

 

소프트웨어 개발 주기는 요구사항 분석, 설계, 구현, 배포, 유지보수 등과 같은 일련의 과정이 존재한다. 이러한 소프트웨어 개발에 있어 사용하는 방법은 크게 두 가지를 사용한다.

 

1. 폭포수 모델

Waterfall Model

(개념) 요구사항을 완벽하게 취합하여 계획을 잘 세우고 그 계획대로 진행하는 방법론

 

(배경) 1970년대 창안된 첫 번째 소프트웨어 개발 방법론

 

(아키텍처) 요구사항 → 분석 → 디자인 → 코딩 → 테스트 → 릴리즈 단계를 지님

 

(특징) 미리 모든 요구사항을 수집하고 전체적으로 분석과 디자인을 한 뒤 한번에 완성

 

(단점-1) 느린 단계별 접근법으로, 중복 프로세스가 발생하고 릴리즈 간 긴 시간차가 발생

 

(단점-2) 과도한 문서 업무가 존재함

 

(보완 방안) 애자일 방법론을 고안

 

 

1. 애자일 방법론

 

Agile Methodology

(개념) 요구사항을 초기에 완벽하게 도출하는 것이 불가능하기에 개발 주기를 반복하고 고객과 소통하면서 소프트웨어의 품질을 발전시키는 방법론

 

(전제) 모든 요구사항을 결코 알 수 없다.

 

(배경) 폭포수 모델의 과도한 문서업무로 인해 비효율을 줄이고자 1990년대 고안된 방법론

 

(특징) 빠르고 모듈식의 주기적인 방식을 통해 개발 전 단계에 걸쳐 요구사항을 지속적으로 분석하고 반영하여 릴리즈 간 시간차를 최소화함

 

 

3. 폭포수와 애자일 방법론의 10가지 주요 차이점

  • 요구사항 : 폭포수 = 미리 도출 / 애자일 = 지속적으로 도출
  • 릴리즈 : 폭포수 = 자주하지 않음 / 애자일 = 고객 니즈 충족을 목표로 지속적으로 릴리즈
  • 지향 : 폭포수 = 계획 중심 / 애자일 = 학습 중심
  • 의사소통 : 폭포수 = 고객과의 드문 의사소통 / 애자일 = 고객과의 지속적인 의사소통
  • 현황 공유 : 폭포수 = 계획중심이라, 단계별 진척 사항을 프로젝트 단계별 점검 / 애자일 = 특정 기능이 완성되지 않은 소프트웨어더라도 프로젝트 초기부터 전체적으로 통합되기까지 지속적으로 진행사항 공유
  • 수직/수평 : 폭포수 = 수평적 단계별 개발 / 애자일 = 기능별 수직 개발
  • 관점 : 폭포수 = 프로그래밍은 단순 공사 / 애자일 = 프로그래밍은 디자인의 확장(분리불가)
  • 통합 : 폭포수 = 마지막에 통합 / 애자일 = 초기와 이후 지속적인 통합
  • 테스트 : 폭포수 = 마지막 단계에 테스트 / 애자일 = 초기와 이후 지속적인 테스트
  • 진단방법 : 폭포수 = 계획에 따른 진척사항 진단 / 애자일 = 소프트웨어를 만들지 소프트웨어 만드는 방법을 문서화하는 것이 아니기에 소프트웨어가 얼마나 회사 비즈니스에 부합하나로 진단

4. Reference

 

디피헬만 키 교환 프로토콜의 경우 간단한 형태이다. 예시를 들자면 A, B가 있을 때 A는 B에게 3을 보내고 B는 6에게 보냈다고 할 경우 서로 3과 6을 곱한 값인 18을 세션키로 사용하는 것과 같다.

 

세션키를 만들기 위해 각자의 개인키를 g의 승수로 취해 모듈러 연산을 한 다음 보낸다. Bob는 세션키를 생성하기 위해 Alice로부터 받은 $R_1$에 자신의 개인키인 $y$를 곱해주고,  Alice는 세션키를 생성하기 위해 해 Bob으로부터 받은 $R_2$에 자신의 개인키인 $x$를 곱하여 같은 세션키를 사용한다.

블록체인에서도 주로 언급되는 영지식 증명의 경우 아래 3가지 조건을 충족시켜야 한다.

 

Completeness(완전성): 어떤 문장이 참이면 정직한 증명자는 정직한 검증자에게 이 사실을 납득시킬 수 있어야 한다.

 

Soundness(건전성): 어떤 문장이 거짓이면 부정직한 증명자는 정직한 검증자에게 이 문장이 사실이라고 납득시킬 수 없어야 한다.

 

zero-knowledgeness(영지식성): 어떤 문장이 참이면, 검증자는 문장의 참거짓 이외에는 아무것도 알 수 없어야 한다.

암호학적으로 해시를 안전하게 설계하기 위해서는 크게 3가지 조건이 필요하다.

 

이를 해시의 3가지 성질이라 한다.

 

제 1역상 저항성(pre-image resistance)

  • 주어진 output 값으로 원래의 input을 알아내기 어려워야 한다.
  • 주어진 해시값 y로부터 $h(x)=y$를 만족하는 x를 찾는 것이 어려워야 함을 의미한다.

 

제 2역상 저항성(second pre-image resistance)

  • 동일한 output을 가지는 input이외의 input'을 찾기 어려워야 한다.
  • 해시함수 h와 x값이 주어졌을 때 동일한 y값을 내는 x`을 찾기 어려워야 한다.

 

 

충돌 저항성(collision resistance)

  • 서로 다른 입력 값을 해시했을 때 같은 output이 나오기 어려워야 한다.
  • 해시함수 h가 주어졌을 때 동일한 y값을 내는 $(x, x')$ 쌍을 찾기 어려워야 한다.

 

한마디로 말해 차례대로 $x, x', (x,x')$을 찾기 어려워야 한다.

1. Elgamal 암호 알고리즘 개요

Elgamal 암호는 공개키암호시스템으로서 디피헬만의 키교환과 같은 원리를 사용하는 것이 특징이다. Elgamal 암호는 이산대수 문제의 어려움에 기반하고 있다. 예를 들어 (x,g,p)가 주어졌을 때 y=g^x mod p는 계산하기 쉽지만, (y,g,p)가 주어졌을 때 x를 찾기 쉽지 않다는 것이다. Elgamal 암호는 Textbook-RSA보다 암호문의 길이가 2배나 길다. 하지만 동일한 평문에 대해 동일 암호문을 출력하는 Textbook-RSA와 달리 동일 평문에 대해 매번 다른 암호문을 출력하는 probabilistic한 성질을 가진다.

 

 

키생성

1. 큰 소수 $p$를 선택한다.

2. $1\leq d\leq p-2$의 범위에서 임의의 d를 선택한다.

3. $Z_p^*$에서 임의의 원시근 $e_1$을 선택한다.

4. $e_2=e_1^d\ mod\ p$를 계산한다.

 

암호화

1. 메시지 $m$과 랜덤 $r$을 선택

2. $c_1=e_1^r\ mod\ p$를 계산

3. $c_2=e_2^rm\ mod\ p$를 계산

4. $(c1, c2)$를 수신자에게 전송

 

복호화

개인키 d를 이용해 $c_2(c_1^d)^{-1}\ mod\ p$를 계산 → M 도출 가능

$c_2(c_1^d)^{-1}\ mod\ p$

= $c_2e_1^{-rd}\ mod\ p$

= $e_2^rm*e_1^{-rd}\ mod\ p$

= $e_1^{rd}me_1^{-rd}\ mod\ p$

= $m\ mod\ p$

 

 

2. Elgamal 암호 알고리즘과 KPA 공격

random number를 사용하지 않으면 Elgamal 암호는 KPA 공격에 취약하다. KPA 공격은 알려진평문공격으로 공격자가 평문에 대응하는 암호문 쌍 일부를 알고 있을 때다. 공격자는 이를 통해 새로운 평문에 대해 평문과 키를 알아내는 것을 목표로 한다.

 

방법 1

공격자는 자신이 알고 있는 평문 m과 $(c_1,c_2)$를 이용해 아래와 같이 계산가능하다.

$c_2=e_2^rm\ mod\ p$

$e_2^r=c_2m^{-1}\ mod\ p$

이때 공격자는 자신이 원하는 $m^*$에 대해 아래와 같은 과정을 통해 알 수 있다.

$c_1^*= e_1^r\ mod\ p$

$c_2^*=e_2^rm^*\ mod\ p$

일 때 이미 계산해둔 정보를 통해 아래와 같이 계산하여 $m^*$를 얻을 수 있다.

$(e_2^r)^{-1}c_2^ = m^*\ mod\ p$

 

방법 2

$[m]$
1) $C_1=e_1^r\ mod\ p$

2) $C_2 = e_2^r*m\ mod\ p$

$[m']$
1) $C_1'=e_1^r\ mod\ p$

2) $C_2'=e_2^r*m'\ mod\ p$

$\therefore {C_2\over C_2`}={{e_2^rm\ mod\ p}\over {e_2^rm'\ mod\ p}}$

attacker가 m를 알고 동일한 r값이 쓰였다면 m'을 알게 되는 것과 같아지기 때문에 Elgamal은 KPA 공격에 안전하지 않다.

 

1. RSA 알고리즘 개요

공개키 암호에는 대표적으로 RSA 암호가 일반적으로 사용된다. 하지만 RSA 알고리즘의 경우 수학적으로 안정성이 검증되지 않았고, 취약점이 나올 경우 거기에 맞춰 알고리즘을 수정하는 방식을 사용한다고 한다. 기본적으로 RSA 알고리즘은 같은 메시지에 대해서 같은 암호문을 생성하는 결정적인 특징을 가진다. 이를 방지하고자 확률적인 특징을 가지도록 하기 위해 고정패딩과 랜덤패딩을 붙이는 RSA-OAEP 방식을 사용한다. RSA-OAEP는 RSA 알고리즘의 취약점 중 하나인 CCA(선택암호문공격)에 안전하다는 것이 특징이다. RSA 암호이외에도 레빈 암호 시스템이 있다. 이는 수학적으로 안정성이 검증되었고 RSA보다 뛰어난 것으로 판단되었지만 RSA 암호보다 유명세를 타지 못해 별로 사용되지 않는 것이라 한다.

 

2. RSA 알고리즘

 

절차

(1) 서로 다른 두 소수 $p, q$를 선택
(2) $p$와 $q$를 곱하여 $n=p*q$를 계산
(3) $\phi(n) = (p-1)(q-1)$을 계산
(4) $1<e<\phi(n)-1$의 범위에서 공개키 $e$를 선택
(5) $d=e^{-1}\ mod\ \phi(n)$을 통해 비밀키 $d$를 계산
——————————
public key = $(n, e)$
private key = $(d)$
검증키 = $(n,e)$
서명키 = $(d)$

 

암호화 (Encryption)

$C \equiv m^e\ mod\ n$

 

복호화 (Decryption)

$m \equiv C^d\ mod\ n$

 

서명 (Signing)

$S \equiv H(m)^d\ mod\ n$ // $H()$ is hash function

 

검증 (Verification)

check if $S^e \equiv H(m)\ mod\ n$

$S^e \equiv (H(m)^d)^e\equiv H(m)$

 

= $m$과 $s$가, 검증키 $(e,n)$을 이용하여 $s^e\ mod\ n = m$이 되는지 확인.

 

3. RSA 알고리즘에 대한 선택암호문공격

1. $c = m^e\ mod\ n$이 주어짐.

2. 공격자는 $gcd(r,n)=1$이면서 $r\in(0,n-1)$을 선택

3. 공격자는 공개키 r을 이용하여 암호화하여 $c^*\equiv\ r^ec\ mod\ n$을 생성

4. 복호화 오라클로 전송하여 $c^{*d}\equiv\ ({r^ec})^d\ mod\ n$을 받음

5. $c^{*d}\equiv\ rc^d\ mod\ n$

6. $c^{*d}\equiv r(m^c)^d\ mod\ n$

7. $c^{*d} \equiv\ rm\ mod\ n$

8. $c^{*d}r^{-1} \equiv m\ mod\ n$을 통해 m을 구할 수 있음. 공격자는 자신이 선택한 r에 대응하는 역원
을 곱하면 됨.

현대암호학에서 사용되는 블록 암호 운용 방식은 크게 5가지가 존재한다.

 

5가지를 확인하기 이전 핵심에 대한 이해를 위한 키워드는 다음과 같다.

 

Keyword: 개념, 암호화, 복호화, 장단점, 블록재사용, 병렬처리, 에러전파

 

1. ECB(Electronic Code Book)

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 모드 처럼 한 블록에서 생긴 에러가 다음 블록으로 전파 되지 않는다.

 

1. 특허 개요


특허란 발명을 보호하고 장려함으로써 기술의 발전을 촉진하여 산업발전에 이바지함을 목적으로 한다. 또한 유용한 기술을 산업 발전을 위해 발명한 자에 대해 그 기술에 대한독점적 배타권리를 부여하고, 발명을 장려하기 위한 것이다. 특허의 3요소는 신규성, 진보성, 산업상 이용 가능성이다. 이러한 특허의 3요소는 특허청구범위(특허명세서)를 작성할 때 사용되며, 청구범위에 3요소에 대 한 의미를 충분히 파악하고 발명이 이러한 3요소를 갖추고 있다는 것을 명확히 기재해야 한다. 특허청구범위란 출원인이 특허권으로서 권리를 확보 및 보호하고자 하는 범위이다. 특허청구범위 에 작성되어야 할 핵심은 1항 또는 2항 내외로 명확하고 간결하게 기재해야 하는 것이 특징이다. 또한 특허청구범위는 독립항과 종속항으로 구성된다. 독립항은 다른 항을 인용하지 않고, 스스로 발명을 정의 내리는 항이다. 독립항은 자체로 완성된 발명이어야 하는 특징을 가진다. 종속항은 타 청구항을 인용하거나 부가하여 구체화될 수 있는 사항을 기재하는 항이다. 청구항을 기재할 때는 유기적 개요 또는 논리적 결합이 필수적이다. 단순 나열은 최대한 지양하여야 하며, 구성요 소간 상호결합관계, 구체적으로는 각각의 위치를 명확히 표현해야 한다.

 

1.1 특허청구범위 작성법

특허 작성 시 고려해야 할 양대 요소는 특허보호범위와 특허등록가능성에 대한 확장이다. 특허는 이 두가지 요소가 균형을 이루는 방향으로 작성되어야 한다. 만약 특허보호범위가 줄어들면 경쟁 업자가 특허 침해를 벗어나는 회피 설계가 쉬워지며, 특허 사용료를 받고 제 3자에게 실시권을 설정하는 계약을 할 때와 같이 특허권 행사가 어려워진다. 특허청구범위를 작성하는 방법에는 발 명에 필요한 필수구성 요소를 기재하는 것이 좋다. 즉 최소한을 내용으로 구성해야 한다. 또한 내 용에는 광의적인 의미의 용어를 사용해야 한다. 예를 들어 자전거나 자동차에 대한 특허를 낸다 고 할 경우 특허청구범위에는 분류체계상 상위에 있는 이동수단 또는 교통수단과 같은 더 넓은 의미의 용어를 사용하는 것이다. 청구항을 작성하는 보편적인 방법으로는 첫 번째로 위와 같이 필수적인 구성요소를 추출하고 명칭을 부여하는 것이다. 다음으로 필수 구성요소들을 시간 축 기 준 또는 여러 기준을 사용하여 적당한 순서로 나열한다. 이후 구성요소 별 특징 및 기능을 기재 한다. 이 때 구성요소의 기능 또는 역할을 단순하고 넓은 권리 범위를 충족시킬 수 있는 방향으 로 작성해야 한다. 마지막으로 각 구성요소들의 상호 관계를 기재한다. 특허 청구항에는 단순 나 열은 가급적 지양된다. 유기적으로 구성요소들의 결합 관계를 포함하지 않는다면 예외 케이스가 발생할 수 있어 특허를 등록한다 하여도 보호받지 못할 수 있기 때문이다.

 

1.2 기업과 특허 비용

기업들은 많은 수의 특허를 보유하고 있다. 하지만 특허를 유지하기 위해서는 특허 유지비가 발 생한다. 특허 유지비는 누진제적 성격을 가져 오랫동안 보유한 특허일수록 더 많은 비용을 내야한다. 이는 특허 발명자가 권리를 산업발전 또는 기술확산과 같은 공익에 기여하는 것보다도 사 익을 과도하게 추구하는 것을 방지하고자 하는 것이다. 국내의 삼성전자, LG전자, SK하이닉스 또한 특허 유지 비용에 있어 백억원~천억원대 정도의 유지비를 사용한다. 특허 유지에 많은 비용이 발 생하는 이유는 출원/등록에 법무 비용이 들고, 특허 유지 대가로 매년 일정 금액을 각국 등록 기 관에 지불해야하기 때문이다. 법무 비용을 포함하여 국내에서 특허 출원/등록의 경우 건당 300만 원 정도이며, 미국/유럽의 경우 2500만원 ~ 3000만원 가량 발생한다고 한다. 특허 등록 이후 특 허청에서는 매년 연차 등록료를 받으며 이는 곧 특허유지비와 같다. 연차 등록료를 내지 않을 경 우 특허는 소멸된다. 기업들은 이러한 특허 출원/등록 비용이나 연차 등록료와 같은 비용을 절감 할 필요성을 느끼게 되었고 선택과 집중을 통해 많은 양의 특허보다 필요로 하는 특허만 취하는 전략을 고수하게 되었다. 모 기업에서는 1인당 연간 1개 이상의 특허를 출원할 것을 강요하였으 나 지금은 더 이상 출원을 강요하지 않는다. 이러한 특허 비용 절감에 대한 다른 방법으로는 사 용하지 않는 특허를 매각하거나, 공증 기관에 신탁하여 다른 회사에서 일정 비용을 내고 사용할 수 있게 하는 방법을 채택할 수 있다. 더하여 버릴 수 없는 특허의 경우 청구항의 수를 줄여 비 용을 절약하는 방법을 사용하기도 한다.

 

-----

Q1. 특허 등록시 반드시 변리사를 거쳐하는가?

A1. 확인 결과 우리나라의 경우 특허출원에 있어 변리사 강제주의를 채택하지 있지 않기 때문에 특허출원을 위해 반드시 변리사를 선임하지 않아도 된다. 직접 특허청에 온라인 또는 서면으로 출원이 가능하다.

-----

Q2. 특허와 관련된 정보는 어디서 확인가능한가?

A2. 등록된 특허와 관련된 정보는 특허검색정보서비스인  http://www.kipris.or.kr 에서 얻을 수 있다.

-----

 

2. 참고 문헌


[1] 알기쉬운 특허청구범위 작성법

[2] 국가법령정보센터 <특허법>

[3] 실전! 특허명세서작성<2차> 특허청구범위작성방법

[4] 32. 특허 청구범위 전략 (등록용/특허권 행사용 청구항, 쓸모 있는/없는 청구항)

[5] 특허 청구범위 작성법

[6] [특허라는게 말이야] 1편 “그때, 특허라도 낼 걸 그랬어♬”(feat. 특허 비용얼마?)

[7] 매년 수백억원씩… 기업들, 특허 유지에 허리 휜다 

[8] 삼성전자 보유 특허 20만건 돌파…올 상반기만 8천건 증가

[9] 특허출원비용안내 및 특허유지비용 

[10] 변리사를 선임하지 않고 직접 출원할 수 있나요?

에러 문구

RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

 

에러 원인

cryptography 라이브러리가 없다.

 

해결 방안

pip install cryptography

[그림 1] GAN 모델이 생성한 이미지

1. GAN 모델 개요


 

GAN이란 무엇인가? GAN은 Generative Adversarial Nets이라는 논문을 통해 나온 모델로 위와 같이 진짜와 동일해 보이는 이미지를 생성하는 모델이다. 그렇다면 우선 GAN은 언제 만들어졌고 어떠한 과정을 거쳐 성장하게 되었는가? 아래는 GAN의 History를 나타내는 그림이다.

 

[그림 2] History of GAN

 

GAN은 2014년 arXive에 처음 올라온 논문이며 이후, 인공지능 관련 학회인 NIPS에서 정식으로 게재되었다. 처음 GAN 모델이 소개된 이후 수 많은 GAN의 후속 연구들이 이어지고 있는 것을 확인할 수 있다. 위 [그림 2]에 기재된 연구의 경우 대표적인 논문들을 기재한 것이며 이외에도 포함되지 않은 연구들이 여럿 존재한다.

 

GAN은 포스팅 되는 2021.09.14 시점으로 약 35,000회의 인용이 있는 것을 확인할 수 있고. 화두가 되었었던 Tensorflow가 발표되었던 논문보다도 더욱 많은 관심을 받고 있는 것을 확인할 수 있다.

[그림 3] GAN 모델과 Tensorflow 프레임워크의 인용수

 

얀르쿤(Yann LeCun)은 GAN 모델이 지난 20년간 딥러닝 분야에서 가장 멋진 아이디어라고 말한다.

[그림 4] 얀르쿤(Facebook, 딥러닝 3대 석학 中 1, 튜링상)

 

그렇다면 이 GAN이라고 하는 모델은 왜 각광받고 있고 후속 연구들이 이어지고 있는 것인가?

 

여러 이유가 있지만 그 중 단연 핵심이라 생각되는 것은 바로 기존의 지도학습의 한계 때문이다.

 

기존의 지도학습의 경우 데이터셋이 필수적으로 수반된다. 하지만 이러한 데이터셋을 만드는 과정에 드는 시간 등의 비용의 한계가 있기 때문에 어렵다는 것이다. 하지만 GAN은 지도학습에 사용되는 라벨 없이도 학습 가능한 비지도학습에 속하며, 데이터를 직접 생성하는 큰 장점을 가진다. 따라서 GAN의 경우 비지도학습의 선두주자로 불리고도 있으며, 몇몇의 사람들은 비지도학습이 더욱 각광받는 기술이 될 것이라 전망한다.

 

[그림 5] 머신러닝 분류체계(지도학습, 비지도학습, 강화학습)

 

아래는 처음 GAN이 나왔을 당시 논문에서 제시한 GAN 모델의 결과 중 일부이다. 

[그림 6] GAN 모델 결과

왼쪽 그림은 MNIST 데이터셋을 학습하여 오른쪽 노란박스와 같이 모델이 숫자를 생성할 수 있음을 보였다. 또한 오른쪽 그림은 TFD(Torronto Faces Dataset)을 이용하여 학습한 뒤 GAN 모델이 사람의 얼굴을 생성할 수 있음을 보였다.

 

초기의 결과물은 색채가 없고 화질이 좋지 않았다. 하지만 GAN 모델의 단점을 극복하는 연구들이 intensive하게 진행됨에 따라 아래와 같이 진짜 이미지와 구분하기 힘들 정도로 발전하는 단계가 되었다.

 

[그림 7] GAN 모델 성능 발전

 

우리는 여기서 이러한 GAN 모델의 성능을 발전을 가능케 했던 대표적인 연구들을 살펴보고자 한다. 이를 위한 첫 단계로 모카님의 블로그에서 아래와 같은 GAN 연구의 분류체계를 확인할 수 있었다.

 

[그림 8] Taxnomoy of GAN

모카님은 GAN을 크게 3가지로 Unconditional GAN, Conditional GAN, Super Resolution으로 나누었다. 분류체계의 기준은 어떻게 정하였는지는 잘 모르겠다. 하지만 서칭 결과 더 체계적이라 판단되는 분류체계는 찾을 수 없었다. 따라서 이를 기반으로 주요 연구들을 살펴보았다.

 

우리가 알아보고자 하는 대표적인 연구들은 아래와 같다.

 

[그림 9] GAN의 대표적인 후속 연구

 

먼저 위 연구에 대해 한마디로 정리하면 다음과 같다.

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의 아키텍처를 확인해보면 아래의 왼쪽 그림과 같이 간단한 형태를 가진다.

[그림 10] GAN 아키텍처 & z의 랜덤 dstirubtion

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)

[그림 11] 확률 밀도 함수(PDF, Probability Density Function)

 

먼저 확률밀도함수란 통계학에서 사용되는 개념으로, 용어에서부터 직관적으로 이해할 수 있듯 확률변수의 분포를 나타내는 것으로, 연속확률변수 x에 대한 f(x)를 의미하는 것이라 볼 수 있다. 

 

가령 최윤제님의 발표자료에 있던 예시를 가져온 것은 아래와 같다.

 

[그림 12] 확률 밀도 함수에 대한 예시 1

 

가령 GAN 모델에 안경을 낀 남성의 데이터를 학습시킨다고 할 경우, 안경을 낀 남성의 특징은 x1이라고 하는 벡터가 가지게 된다. 

 

[그림 13] 확률 밀도 함수에 대한 예시 2

흑발 여성의 데이터셋을 학습 시킬 경우, 흑발 여성에 대한 특징을 x2라고 하는 벡터가 가지게 되며

 

[그림 14] 확률 밀도 함수에 대한 예시 3

금발 여성의 데이터셋을 학습 시킬 경우 GAN 모델은 금발 여성에 대한 특징을 x3라고 하는 벡터에 학습시키게 된다.

 

결론적으로 이렇게 학습된 확률밀도함수가 있을 때, 아래와 같이 GAN 모델이 생성한 이미지가 가지는 확률밀도함수와 둘 사이의 차이가 줄어들면 줄어들 수록 원래의 실제 이미지와 같아지는 원리라고 할 수 있다.

 

[그림 15] 실데이터 학습을 통한 확률 변수의 분포와 모델이 생성한 이미지가 가지는 확률 변수

 

실제 Original GAN의 논문에 실린 그림은 아래와 같다. 

[그림 16] GAN의 학습 과정

검은 점선: 원 데이터의 확률분포, 녹색 점선: 생성자가 만들어 내는 확률분포, 파란 점선: 판별자의 확률분포

 

파란 점선인 판별자(Discriminator)는 학습이 진행됨에 따라 GAN이 만들어내는 녹색 점선(Generator)와 분포가 동일해지는 것을 확인할 수 있다.

 

따라서 (d)의 단계에서는 판별자가 Real/Fake를 분류하게 되어도 확률이 같기 때문에 분류를 해도 소용 없게 되며 생성자는 실제 데이터와 매우 흡사하게 이미지를 생성할 수 있게 된다.

 

2.3 수식으로 이해하는 GAN

GAN은 생성자와 판별자의 경쟁구도이며, 경쟁을 통해 균형점(nash equilibrium)을 찾는 것이 목표라 할 수 있다.

 

GAN에서 사용되는 수식은 아래와 같이 간단한 형태이다.

 

[그림 17] 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 함수 그래프 참조)

 

[그림 18] 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의 수식을 코드로 표현할 경우 아래와 같아진다.

[그림 19] 코드로 표현한 GAN 모델

크게 4 영역으로 판별자 D의 layer, 생성자 G의 layer, D의 loss, G의 loss 부분으로 나뉜다. 핵심은 loss를 표현하는 영역으로 앞서 설명한 수식을 이용하여 위와 같이 작성할 수 있다.

 

2.5 실험 결과

결과적으로 앞서보았던 그림을 포함하여 크게 3종류인 (MNIST, TFD, CIFAR-10)의 데이터셋에 대해 학습하고 이를 생성자 모델을 사용하여 시각화 하는 것을 확인할 수 있다.

[그림 20] GAN 모델 결과

숫자와 얼굴의 경우 어느정도 식별 가능한 형태라 볼 수 있으며, 동물/사물에 대해서는 비교적 추상적으로나마 생성해내는 것을 확인할 수 있다. 

 

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 되어 있는 구조이기 때문이다.

[그림21] 기존 GAN의 구조

따라서 Facebook은 DCGAN이라고 하는 모델을 내놓으며 Fully-Connected 구조를 CNN으로 바꾸어 GAN의 성능 향상을 도모한 것이 핵심이라 할 수 있다.

 

2.2 DCGAN의 아키텍처

아래는 DCGAN의 Generator에 해당하는 아키텍처이다. 

[그림 22] DCGAN의 구조 (Generator)

DCGAN은 생성자 모델에 Transposed Convolutional Network를 사용하여 Up-Sampling하는데 사용하였다. 위 그림에는 나와 있지 않지만 판별자 모델에는 단순 Convolutional Network를 사용한 것이 특징이다.

 

Trasnposed Convolutional Network의 경우 기존의 컨볼루션 네트워크처럼 줄어드는 것이 아닌 확대되는 것이라 할 수 있다. 아래 왼쪽은 기존의 컨볼루션 네트워크고 오른쪽의 경우 Transposed 컨볼루션 네트워크이다.

[그림 23] Convolutional Network (좌), Transposed Convolutional Network (우)

좌측 convolutional network는 5x5의 input에 3x3의 kernel을 사용하여 3x3의 output을 출력한다. 반면

우측 Transposed Convolutional Network는 4x4의 input과 3x3의 kernel을 통해 6x6의 output을 출력한다.

DCGAN은 Generator의 구조에 우측의 Transposed Convolutional Network를 사용하였다.

 

하지만 단순히 CNN으로 변경하는데 있어서 좋은 성능을 내지 못했다. 따라서 최적의 성능을 내기 위해 5가지 방법을 적용하였다.

 

[그림 24] DCGAN 아키텍처 가이드라인

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)

[그림 25] DCGAN 전체 아키텍처

 

2.3 실험 결과

DCGAN을 사용하여 모델을 학습 시켜 이미지를 생성한 결과는 다음과 같다.

[그림 26] DCGAN 모델의 이미지 생성 결과

얀르쿤의 GAN 모델보다 훨씬 더 다채롭고 가시적인 이미지를 생성하는 것을 확인할 수 있다.

 

위와 같은 이미지를 생성하기 위해 학습에 사용한 데이터셋은 LSUN(Large-scale Scene Understanding), ImageNet-1K, Face dataset이다. 

 

아래는 판별자 모델의 필터를 시각화한 결과이다. 

[그림 27] Discriminator 필터 시각화

각각의 filter들이 침대나 창문과 같이 침실의 일부를 학습하였고, 필터 시각화를 통해 기존의 모델들이 Black Box였던 문제점을 해소하였다.

 

또한 보간(Interpolation)을 수행하여 이미지의 각도를 변경이 가능함을 보였다. 

[그림 28] 보간을 통한 각도 변경

여기서 보간이란 수치해석학에서 사용되는 개념으로 두 점을 연결하는 방법이다. 보간을 사용하는 이유는 모든 점을 메모리에 올리면 비효율적이기 때문에 특징이 될 수 있는 점들만 대표적으로 메모리에 올려 계산하기 위해 사용된다. 종류에는 다항식 보간법, 스플라인 보간법, 라그랑지 보간법, 뉴턴 보간법 등의 여러 종류가 있다.

 

또한 DCGAN을 통해 벡터 산술 연산(Vector Arithmetic)이 가능함을 보였다.

 

[그림 29] 벡터 산술 연산

 

선글라스 낀 남성 - 선글라스 벗은 남성 + 선글라스 벗은 여성 = 선글라스 낀 여성이다.

 

 

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로 변경하자는 것이 이 논문의 핵심이라 할 수 있다.

[그림 30] LSGAN의 성능 향상 핵심 방안

위 그림을 보면 분홍색 *(star)를 볼 수 있다. 분홍색 *는 Generator가 생성한 가짜 이미지라 보면 된다. 하지만 이 가짜이미지는 판별자를 속였고 때문에 더 이상 학습하지 않는(Gradient Vanishing) 것을 확인할 수 있다. 이 때 LSGAN 모델의 아이디어는 판별자를 속였더라도 더 정교하게 속이기 위해 실제 real과 동일한 수준으로 끌어올리자(추가 학습하자)는 것이다.

 

3.2 코드로 이해하는 LSGAN

기존의 GAN과의 가장 큰 차이점이라고 하면 아래와 같이 D의 loss 함수와 G의 loss 함수에 Least Square loss를 적용한 것이라 할 수 있다. (Cross Entropy loss → Least Square loss)

[그림 31] Vanilla GAN(좌) LSGAN(우)

 

3.3 실험 결과

Original GAN보다 높은 퀄리티를 보이는 이미지를 생성하는 것을 확인할 수 있다.

[그림 32] LSGAN 모델을 통한 이미지 생성 결과

이러한 이미지를 생성하기 위해 LSUN(풍경 데이터셋), CIFAR-10을 활용하였다.

 

주요 컨트리뷰션 포인트 중 첫 번째는 High Quaility라는 것이고 두 번째는 More Stable하다는 것이다.

 

GAN을 평가하는 metric은 크게 두 가지 중 하나인 Inception Score가 Facebook에서 만든 DCGAN보다 뛰어난 성능을 보이는 것을 확인할 수 있다. (나머지 하나는 프리쳇 거리(Frechet Distance))

 

[그림 33] LSGAN의 성능 평가

 

4. PGGAN (Progressive Growing GAN)


4.1 연구 배경

크게 2가지 단점을 극복하고자 PGGAN 모델이 만들어지게 되었다. 첫 번째로는 GAN을 고해상도로 만들면 판별자는 생성자가 생성한 이미지의 Real/Fake 여부를 구분하기 쉬워진다는 단점이 있고, 두 번째로는 고해상도로 만들어도 메모리 제약조건으로 batch size를 줄여야하고 줄이면 학습과정이 불안정해진다는 단점이 있었기 때문이다.

 

 

4.2 핵심 아이디어

PGGAN은 NVIDIA에서 진행한 연구이다. PGGAN의 핵심 아이디어는 4x4의 저해상도 이미지를 1024x1024 고해상도 이미지로 단계별(Progressive Growing)로 학습한다는 것이다. 

[그림 34] PGGAN의 핵심 아이디어

기존에는 처음부터 고해상도 이미지를 학습하려다 보니 학습이 올바르게 되지 않았다. 이는 초등생에게 처음부터 미적분을 묻는 것과 같다고 한다. 따라서 기본적인 사칙연산에 해당하는 4x4, 8x8, 16x16으로 점진적으로 학습하게 되면 계속해서 간단한 문제를 묻는 것과 같기 때문에 학습이 더 잘된다고 한다.

 

따라서 저해상도에서 보이는 Abstract을 우선적으로 학습 한 뒤 고해상도에서 보이는 Concrete(눈, 코, 입, 모공 등)를 학습하는 것이 특징이다.

 

이러한 PGGAN의 장점은 크게 3가지로 나뉜다.

1. 작은 이미지부터 점진적으로 학습하기 때문에 안정성 있다.

2. 처음부터 복잡한 질문을 하지 않기에 간단하다.

3. 저해상도에서 학습할 때 충분한 학습을 하게 되며 학습 시간이 짧다.

 

 

4.3 실험 결과

가장 처음 설명한 Original GAN의 결과와 비교했을 때 비약적으로 발전한 것을 느낄 수 있다.

[그림 35] PGGAN 모델에서 생성한 이미지

위와 같은 이미지를 생성하기 위해 CelebA-HQ 데이터셋을 사용하여 30,000개의 유명인사 사진을 학습했다고 한다. 

 

또한 PGGAN의 성능의 경우 Inception Score가 8.8에 달하는 것을 확인할 수 있다.

[그림 36] PGGAN의 성능 평가

 

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를 표현하는 것이 어렵다는 점을 극복하기 위해 진행 된 연구이다.

[그림 37] SRGAN과 타 모델 간의 성능 비교

쉽게 말해 MSE는 이미지가 조금 흐릿한 형태를 띠게 되는데 이는 MSE loss function은 average(평균제곱오차)를 학습하기 때문이다. 전반적으로 smooth한 정보를 얻어서 high frequency content를 표현하지 못한다는 것이다. 다시 말해 평균을 loss로 잡았기 때문에 이미지의 고주파수 영역이 평균 값으로 회귀 된다는 의미이다.

 

5.2 PSNR

먼저 PSNR을 설명하면, 최대 신호대비 잡음비라고 할 수 있다. 구체적으로, 신호가 가질 수 있는 최대 전력에 대한 잡음의 전력이다. 주로 동영상이 압축될 때 화질 손실 정보를 평가할때 사용하는 지표로, 높을 수록 결과 값이 좋다 할 수 있다.

 

[그림 38] PSNR 수치 저하에 따른 이미지 화질 비교

하지만 이러한 PSNR의 단점은 원본 이미지와 왜곡 이미지 사이의 수치적 차이로 평가하기 때문에 사람 인지와 일치되지 않는 품질 점수를 산출한다는 것이다. 예를 들면 아래 그림과 같다.

 

[그림 39] 비슷한 PSNR 수치에 대한 인지적 품질의 차이

 

PSNR 값은 유사하지만 품질을 제대로 반영하지 못하는 것과 같다. 이는 PSNR을 산출하는 수식에 내재한 단점이라 볼 수 있다.

[그림 40] PSNR 산출 수식

핵심은 맨 아랫줄만 확인하면 이해할 수 있다. PSNR은 MAX에 log scale을 취한 것에 MSE에 log scale을 취한 것을 빼준다. 하지만 앞서 언급하였던 MSE를 사용하기 때문에 이미지의 고주파수 영역을 나타내지 못하고 결과적으로 PSNR 값에 따른 이미지의 품질이 사람의 인지와 달라지는 것이다.

 

이러한 단점을 극복하기 위해 대안으로 사용하는 것은 SSIM, MOS, PSNR-HVS, PSNR-HVS-M, VIF 등이 있긴하다.

[그림 41] PSNR의 대안인 SSIM (1에 가까울 수록 좋음)

 

하지만 다시 SRGAN 모델로 돌아와서, 결과적으로 이 연구에서 하고자 하는 핵심은 해상도를 평가하는 PSNR이라는 수치는 높더라도 실제 사람의 눈으로 봤을 때 해상도가 높지 않다. 따라서 실제로 눈으로 보더라도 해상도가 높게 나올 수 있도록 만들겠다는 것이 이 연구의 핵심이라 할 수 있다.

 

5.3 연구 핵심

위와 같은 단점을 해결하기 위한 핵심 방안으로, 인지적 유사성에 주목한 perceptual loss를 사용하였다는 것이다. percepual loss는 크게 2가지인 content loss와 adversarial loss로 구성된다.

[그림 42] perceptual loss

 

5.3.1 content loss

pixel space에서 유사성 대신에 perceptual 유사성을 학습하기 위한 loss이다.

[그림 43] content loss

복잡할 것 없이 간단하게 이해하면 다음과 같다. LR(Low Resolution) 이미지를 즉, 저해상도 이미지를 생성자가 만들면 판별자가 판별할 것인데 N개를 판별한 합이 작아지도록 만드는 것이라 할 수 있다. 

 

 

5.3.2 Adversarial loss

판별자를 속이기 위한 loss 함수라 할 수 있다.

[그림 44] adversarial loss

쉽게 간략히만 이해하면 HR(고해상도)의 이미지에서 LR(저해상도)의 이미지를 빼고 제곱을 취해준 값의 합이 점점 줄어들도록 학습하는 것이라 볼 수 있다.

 

5.4 아키텍처

논문에 언급된 아키텍처보다 더 직관적으로 설명되어 있는 그림을 확인할 수 있었고 아래와 같다.

[그림 45] SRGAN 아키텍처

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를 표현하기 위함이다. 

[그림 46] SRGAN 모델 성능 지표 비교

Set5와 Set14의 경우 데이터셋을 의미한다. 저자들은 MOS라고 하는 벤치마크 스코어를 사용하여 MSE를 사용하였을 때 보다 높은 MOS 스코어를 얻음을 보인다. 하지만 MOS라고 하는 것은 일종의 주관적인 평가로, 평가자 몇 명을 모집하여 사용하는 방식이라는 점에 있어서 정량적이라기 보다 정성적인 평가에 가깝다고 볼 수 있다.

 

주요 컨트리뷰션 포인트로는 크게 2가지로, 첫번째는 새로운 perceptual loss를 제안하였다는 점이고 두 번째로는 모호하지만 새로운 벤치마크 스코어인 MOS를 제안하였다는 것이다.

 

참고로 VGG54를 저자들은 SRGAN이라고 부른다.

 

5.6 적용 결과

 

저자들은 유튜브에 자신들이 만든 SRGAN을 이용한 영화 화질을 높이는 것을 보였다.

 

https://youtu.be/sUhbIdSd6dc

 

5.7 국내 연구 사례

[그림 47] SRGAN 국내 연구 사례

또한 이러한 SRGAN을 사용하여 CCTV 영상의 화질을 개선하는 기법을 연구한 국내 연구 사례도 존재한다. 하지만 그럴듯하게 생성이 가능하다는 것이지 법적인 증거로서의 효력으로 채택되는 것은 별 개의 문제가 될 수 있겠다.

 

6. CycleGAN


6.1 연구 배경

CycleGAN 모델을 만든 저자는 한국인으로 이전의 pix2pix라는 연구의 확장이 CycleGAN이라 할 수 있다.

[그림 48] CycleGAN 모델의 결과

 

CycleGAN은 특정 화풍, 질감을 다른 사진에 적용할 수 있는가에 대한 질문에 답을 하기 위해 만들어진 모델이라 할 수 있다. 

 

6.2 핵심 아이디어

특징이 겹치지 않는 서로 다른 이미지 집합(Unpaired)을 학습하기 위해 순환 일관성 손실 함수(Cycle Consistency)를 사용하였다는 것이다.

 

[그림 49] 순환 일관성 손실 함수

일종의 역함수라고 할 수 있다. 하지만 G를 통해 변환한 것이 F를 통해 재 변환될 때 원본과 최대한 가까워 지도록 loss 값을 설정하여 학습하는 것이라 할 수 있다.

 

 

참고로 Paired는 x좌표 값이 y좌표 값에 대응되는 정보가 담기지만 Unpaired는 대응되는 정보가 존재하지 않는 것이 특징이다.

[그림 50] Pair & Unpaired dataset

paired의 경우 pix2pix 모델에서 사용했다 할 수 있고 unpaired의 경우 cycleGAN에서 사용하였다.

 

이러한 unpaired dataset에서의 translate를 위해 사용한 함수는 순환 일관성 손실함수인데 그 전체는 아래와 같다.

[그림 51] 순환 일관성 손실 함수

크게 어려울 것 없다. 역함수를 통해 나온 값이 만약 x'라면(strict하지 않기 때문에 x'가 나옴) x와의 차이가 줄어들도록 loss 값을 설정한 것이다. 마찬가지로 y'가 나온다면 y와의 차이 값이 줄어들도록 만든것이 순환 일관성 손실함수라 할 수 있다.

 

6.3 실험 결과

[그림 52] CycleGAN 모델이 생성한 이미지 (실험 결과)

CycleGAN 모델의 실험 결과로 좌측의 Input 값을 넣으면 우측의 모네, 반고흐 등의 화풍으로 바꿔주는 것을 확인할 수 있다.

 

또한 CycleGAN에서는 실제 위성사진을 지도로 바꿔주고 지도를 실제 위성사진으로 얼마나 잘 바꾸어주는 가에 대한 실험도 하였고 아래 그림과 같다.

[그림 53] CycleGAN 모델이 수행한 Photo-Map, Map-Photo 결과

어색하거나 엉뚱한 결과를 내는 다른 모델들에 비해 Ground truth와 가장 유사한 그림을 만들어내는 것을 확인할 수 있다. 

 

이러한 CycleGAN을 평가하기 위한 평가 메트릭으로는 AMT와 FCN-Score를 사용하였다.

AMT: 사람에게 어떤 것이 진짜인지 평가하는 방식으로 별도의 Metric이 없는 GAN에게 가장 강력한 점수

FCN Score: YOLO와 같은 객체 탐지 모델을 사용해 변환된 이미지에서 얼마나 사물을 잘 인식하는가?

 

[그림 54] AMT

CycleGAN이 다른 모델들에 비해 Map→Photo, Photo→Map에서 가장 우수한 성능을 보이는 것을 확인할 수 있다.

 

또한 FCN Score에서도 마찬가지로 CycleGAN이 다른 모델들과 비교하여 뛰어난 성능을 보이는 것을 알 수 있다. (pix2pix은 저자의 연구실에서 하던 이전 연구)

[그림 54] FCN-Score

 

6.4 한계점

색상이나 질감은 변경할 수 있으나 객체의 모양은 바꿀 수 없는 것이 단점이다. 이는 여러 장의 데이터를 학습하여 분위기(화풍, 질감) 변경에만 초점을 두기 때문이다.

 

[그림 55] CycleGAN의 한계점

 

6.5 Contribution Point

주요 컨트리뷰션 포인트는 기존의 pix2pix 모델에 순환일관성 손실함수를 도입하여 unpaired한 데이터셋에서도 동작하게 만들었다는 것이 핵심이라 할 수 있다.

 

 

7. StarGAN


7.1 연구 배경

기존의 연구들은 image-to-image translation을 위해서 이미지 도메인 쌍을 학습해야 했다. 이러한 결과로 모델의 scalability와 robusteness가 떨어진다는 단점이 있었다.

 

여기서 도메인이란 이미지의 표정 변화, 이미지의 성별 변화, 이미지의 피부 색 변화 등을 의미한다.

 

따라서 StarGAN은 특정 도메인에 국한하지 않고, 하나의 Generator에서 다른 도메인으로 Transfer 할 수 있도록 만들었다는 것이다.

[그림 56] StarGAN

처음에는 StarGAN이라는 이름에서 유명인사를 의미하는 줄 알았으나 성(Star)형으로 모델을 구성하여 일종의 Transfer Learning이 가능하도록 만들었다는 것이다. 저자들은 Facial attribute transfer와 Facial expression synthesis task에서 경험적으로 효과가 있는 것을 확인하였다고 한다.

 

7.2 아키텍처

[그림 57] StarGAN 아키텍처

 

핵심만 간단하게 이야기하면 (a)의 Training the discriminator에서 기존 GAN처럼 Real/Fake만 출력하는 것과 달리 어떤 Task인지에 대한 Domain 정보까지 분류하도록 만들었다는 것이다. D는 결국 이미지와 도메인의 두 개의 확률 분포를 만들어낸다 볼 수 있다.

 

7.3 실험 결과

[그림 58] StarGAN 실험 결과 1

 

[그림 59] StarGAN 실험 결과 2

전반적으로 맨 아래의 StarGAN을 이용하면, 다른 여러 모델을 사용하여 Domain Transfer한 결과들 보다 가장 자연스럽게 나온다는 것을 확인할 수 있다.

 

[그림 60] StarGAN의 성능 평가 지표

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)

[그림 61] GAN 모델 평가 메트릭

여러가지가 있지만 주로 크게 2개만 사용한하며 그것은 Inception Score(IS)와 Frechet Inception Distnace(FID)이다.

 

 

8.1 Inception Score (IS)

IS의 성능 평가기준 크게 2가지 이다.

  • 생성된 이미지의 퀄리티 (Fidelity)
  • 생성된 이미지의 다양성 (Diversity)

 

계산 방법은 Pretrained된 Inception 모델에 Real/Fake 데이터를 넣어 KL-Divergence를 계산한다고 한다. 

 

이를 수식으로 이해하면 아래와 같다.

 

[그림 62] 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)

 

[그림 63] KL-Divergence

하지만 이러한 IS의 경우 생성된(Fake) 이미지만 사용하기 때문에 실제 이미지와 비교하지 못한다는 단점이 있다.

 

이를 보완하기 위해 나온 메트릭이 FID라고 할 수 있다.

 

8.2 Frechet Inception Distance (FID)

IS의 단점을 개선하기 위해 고안된 지표로, 두 분포 사이의 거리를 측정하는데 사용되는 방법이다.

 

1. 분류 모델에 따라 실제 이미지와 생성된 이미지의 특징량을 추출한다.

2. 특징량이 정규분포를 따른다 가정 후 그 분포 사이의 거리를 측정한다.

 

[그림 64] FID 수식

ur과 cr: 각각 실제 이미지에서 추출된 특징량의 평균과 공분산을 의미한다.

ug와 cg: 각각 생성 이미지에서 추출된 특징량의 평균과 공분산을 의미한다.

 

inception 네트워크의 중간 layer에서 feature를 추출하고 feature에서 평균과 공분산을 추출하고 계산한다.

 

FID 값이 낮으면 Real/Fake가 유사하다고 판단한다.

 

단점은 표본의 분포가 정규분포가 아닐 경우 제한적인 통계량(평균, 분산)만으로는 분포의 차이를 잘못 설명할 수 있다는 점이 있다.

 

9. GAN 모델 구현

[그림 65] GAN 모델 구현을 위한 코드 제공 깃허브

https://github.com/eriklindernoren/Keras-GAN에서 GAN 모델을 구현한 코드를 제공하고 있으니 GAN에 관심이 있다면 참고하길 바란다.

 

12. GAN 활용 사례

실생활에서 사용되고 있는 GAN으로는 NAVER에서 웹툰에 GAN을 적용하여 몰입형 웹툰을 선보이기도 한다.

[그림 65] 네이버 웹툰에 적용된 GAN

또한 PULSE9의 딥리얼 AI는 가상 인물 자동화 서비스를 제공한다. 20년간 활동한 국내 아이돌 이미지 데이터를 수집하여 가상의 101명의 아이돌을 만든다고 한다.

[그림 65] PULSE9의 딥리얼 AI

 

한국전자통신연구원(ETRI)에서는 SNS 트렌드를 분석해 6M장의 DB로 개인 취향의 패션상품 제작을 돕는 서비스를 개발한다고 한다.

[그림 66] ETRI 패션상품 제작 지원 서비스

패션영상 다중 정보 추출, 디자인 생성 & 스타일 변환, 착장 영상 자동 생성 등

 

또한 MyHeritage에서는 딥 노스텔지어라고 하여 정지된 사진에 생명을 불어 넣는 AI 서비스도 제공하고 있다.

앞으로의 GAN의 미래는 어떻게 되고 세상은 어떻게 변할까? 특이점이 온다의 저자인 레이 커즈와일은 기술의 발전속도는 기하급수적으로 바뀌어 2045년이 되면 기계가 인간을 뛰어넘는 세상이 온다고 하였다. 최근 Google, Facebook, OpenAI, NAVER 등의 기업에서 눈부신 연구들이 이루어지고 있고 커즈와일이 예측한 미래는 점점더 현실로 가까워져 가는 것이 느껴진다. 아직도 헤쳐나가야 할 요소들이 많겠지만 21세기 안에는 더욱이 비약적인 발전들이 이루어질 것이라는 강한 확신이 든다. 그렇다면 전례없이 빠르게 변화하는 지금의 시대에 나라는 사람은 후대를 위해 어떤 가치를 창출 할 수 있을지 많은 고민이 든다.

 

Reference

[1] https://velog.io/@viriditass/GAN%EC%9D%80-%EC%95%8C%EA%B2%A0%EB%8A%94%EB%8D%B0-%EA%B7%B8%EB%9E%98%EC%84%9C-%EC%96%B4%EB%96%A4-GAN%EC%9D%B4-%EB%8D%94-%EC%A2%8B%EC%9D%80%EA%B1%B4%EB%8D%B0-How-to-evaluate-GAN 

[2] https://ysbsb.github.io/gan/2020/06/17/GAN-newbie-guide.html

[3] https://www.youtube.com/watch?v=odpjk7_tGY0&ab_channel=naverd2

[4] https://github.com/POSTECH-CVLab/PyTorch-StudioGAN?fbclid=IwAR23QIuAkcgjK6-Q3ypmAbBcbI3sYLV917PlKn1pekQd53WbyQv-_L7VOPw 

[5] https://github.com/nightrome/really-awesome-gan

[6] https://generated.photos/face-generator/new

[7] http://www.aitimes.com/news/articleView.html?idxno=137405

[8] https://www.bloter.net/newsView/blt201806080001

[9] https://www.samsungsds.com/kr/insights/Generative-adversarial-network-AI.html

[10] https://aigong.tistory.com/51

[11] https://sanglee325.github.io/super-resolution/srgan/#

[12] https://haawron.tistory.com/22

 

 

혼돈의 해독제

 

이 책의 핵심 내용은 제목과 동일하게 혼돈과 같은 삶을 살아가기 위한 12가지 지침이 핵심이라 할 수 있다. 이 책은 처음 읽었을 때와 시간이 지난 뒤의 평점이 달라진 책이다. 처음 이 책을 읽은 뒤 전체적으로 높은 평점을 주지 않았다. 하지만 시간이 지난 후로 다시 한 번 보았을 때 이해할 수 있는 내용의 범위가 넓어졌고 책 속에 기존 생각보다 더 좋은 의미들이 담겨 있다는 것을 알게 되면서 평가절상하게 되었다. 피터슨은 다학문간에 지식들을 결합하여 우리에게 알기 쉬운 말로 전달한다. 아래는 그 내용들이다.

 

 

01. 어깨를 똑바로 펴라

피터슨은 바닷가재의 서열 싸움에 대한 일화를 시작으로 인간과 갑각류의 뇌에는 서열 계산기가 있다고 한다. 만약 우리가 싸움에서 진 바닷가재처럼 축 늘어진 자세로 다닌다면 사람은 서열 계산기를 통해 우리를 지위가 낮은 사람이라고 생각한다고 한다. 이런 낮은 순위의 결과로 세로토닌의 양이 줄어들어 결과적으로 행복감이 떨어지고 불안감과 슬픔은 커진다고 한다. 따라서 자세부터 반듯하게 바로잡아야할 필요성을 언급하며 우리의 생각을 거침 없이 말하고 바라는 것이 있다면 그런 권리를 가진 사람에게 당당하게 요구하라고 한다. 이로 인해 세로토닌이 신경회로에 충분히 흐르고 앞으로 두려움이 사라져 나아갈 수 있는 토대를 마련해준다고 한다.

 

 

02. 당신 자신을 도와줘야 할 사람처럼 대하라

처음 읽을 때는 그 깊이를 가늠하지 못했던 말이 있다. 그것은 피터슨이 우리에게 요구한 3가지였다. 첫 번째는 지금 우리가 어디에 있는지 알아야 한다는 것이며, 두 번째는 지금 우리가 누군지 정확히 알아야 하는 것이고, 세 번째는 우리가 어디를 향해 가고 있는지를 알아야 한다는 것이다. 나 또한 이 물음에 대한 스스로만의 답을 내려봄으로써 삶의 방향이 크게 바뀌었고, 흔들리지 않을 삶의 목표를 확립할 수 있었다. 과거에는 이러한 질문에 대해 나의 생각을 찾으려 하지 않았고 관심도 없었다. 하지만 뒤늦게 자아정체성이 확립되는 과정에서 이러한 질문에 대한 생각의 필요성을 깨닫게 되었고, 덕분에 피터슨의 말대로 미래 계획을 세우고, 한계를 극복할 방법을 찾으며, 세상에 대한 희망을 품는 계기가 될 수 있었다.

 

 

03. 당신에게 최고의 모습을 기대하는 사람만 만나라

우리가 타인과의 병적인 관계를 끊지 못하고 있다면 그건 우유부단하고 박약한 의지 때문일 것이라고 말한다. 도덕적으로 세상을 더 나쁘게 만들려는 사람을 지지할 의무는 없다며, 오히려 도와주는 것이 그릇된 선택이라 말한다. 세상을 더 좋게 만들어 가려는 사람을 곁에 두고, 우리에게 유익한 사람하고만 관계를 맺는 것은 이기적인 행위가 아니라 바람직한 행위인데 이는 우리는 그들 덕분에 좀 더 나은 사람이 될 수 있고, 그들도 성장하는 우리를 보고 좋은 영향을 받을 것을 수 있기 때문이라고 한다.

 

 

04. 당신을 다른 사람과 비교하지 말고, 오직 어제의 당신하고만 비교하라

모든 인간은 평등하지만, 능력과 결과는 평등하지 않다고 말하며, 만약 어떤 게임에서 성공하지 못하면 다른 게임에 도전해도 된다 말한다. 우리의 장점과 약점, 우리가 처한 상황을 고려해 더 나은 게임을 선택할 수도 있기 때문이다. 또한 얻는 게 있으면 반드시 잃는 게 있기 때문에 모든 면에서 완벽한 인생을 사는 사람은 없다 말한다.

 

 

05. 아이를 제대로 키우고 싶다면 처벌을 망설이거나 피하지 말라

다섯 살이 될 때까지 올바로 행동하는 법을 배우지 못하면 친구를 사귀는 데 평생 어려움을 겪는다고 한다. 이러한 사회화를 위해서는 처벌이 당연하며 나아가 이러한 처벌을 언제, 어떻게 사용해야 하는 것이 더 중요한 것이라 말한다. 또한 자녀에게 줄 수 있는 가장 큰 선물은 올바른 훈육이라며 처벌의 중요성을 재차 강조한다.

 

 

06. 세상을 탓하기 전에 방부터 정리하라

알렉산드로 솔제니친은 제2차 세계 대전 당시 강제 노동 수용소에 갇히게 된다. 수용소 안에서 암도 걸렸고 대부분의 삶이 의미없는 노동에 낭비되었다. 하지만 솔제니친은 그 속에서도 이런 현실이 자신의 책임이 없는가를 생각하며 공산당을 무작정 지지하던 자신의 과거를 떠올리고 삶 전체를 되짚어 보았다. 이를 통해 자신이 갇힌 강제 노동 수용소를 고발하는 <수용소 군도>를 쓰게 되었고 결정적으로 공산주의라는 이데올로기를 뿌리째 흔들어 놓고 붕괴시킬 수 있었다. 우리 서로가 세상을 탓하기전 조금 더 책임감을 짊어진다면 더 좋은 세상이 되지 않을까 한다.

 

 

07. 쉬운 길이 아니라 의미 있는 길을 선택하라

이는 일본의 유명한 기업가인 이나모리 가즈오 회장이 이야기 한 바와 동일하다. 이나모리 가즈오의 경영원칙 중 하나는 쉬운 것이 아니라 옳은 길을 택하는 것이었다. 소크라테스 또한 쉬운 길을 거부했다. 그렇기 때문에 2500여 년이 지난 지금에도 그의 결정이 모두의 기억에 남아 마음의 위안을 준다. 피터슨은 세상을 더 좋게 만드는 일을 가치체계 가장 높은 곳에 두고 해야할 일을 해 나갈 것을 권한다. 반면 모든 것을 쉽게 하려는 편의주의는 비겁하고 천박하다 말하는데 이러한 행동에는 신념도, 용기도, 희생도 필요하지 않기 때문이라 말한다.

 

 

08. 언제나 진실만을 말하라, 적어도 거짓말은 하지 말라

진실만을 이야기 해야 하는 이유를 크게 세 가지를 들고 있다. 첫 번째는 진실한 모습을 드러내지 않는다면 우리의 진짜 모습을 알 수 없게 되며 두 번째는 우리의 잠재력이 억눌려 발휘되지 않는다는 것이며, 세 번째는 더 높은 꿈은 지위나 권력보다 인격과 능력의 향상과 관계 있기 때문이라 말한다. 노무현 대통령 또한 이 원칙을 고수하였다. 문제 제기가 될 수 있는 사항에 있어서도 회피하지 않고 늘 정면으로 맞서 솔직하게 임하였다. 그의 자서전에는 아내를 때렸다는 이야기를 직접 썼을 정도이다.

 

 

09. 다른 사람이 말할 때는 당신이 꼭 알아야 할 것을 들려줄 사람이라고 생각하라

피터슨은 우리는 대다수 경청하지 못하고 섣불리 상대를 평가하려는 습성이 있다 말한다. 하지만 섣불리 판단치 않고 상대의 말을 경청하면 상대는 자기 생각을 빠짐없이 솔직하게 말한다는 것이다. 피터슨은 대화할때 습관적으로 상대의 말을 요약해서 들려주고, 자신이 제대로 이해했는지 묻는다고 한다. 이렇게 하는 이유는 크게 세 가지를 들었다. 첫 번째는 상대의 말을 완전히 이해할 수 있고, 둘 째는 상대의 기억 강화 및 활용에 도움을 주며, 마지막은 허수아비 논법의 약점을 극복할 수 있다는 것이다. 또한 요약을 할 때 중요한 것은 당사자보다 더 명료하고 간결하게 표현할 수 있어야 한다고 말한다.

 

 

10. 분명하고 정확하게 말하라

우리의 의도를 말로 표현해야 우리가 의도하는 바를 명확히 알 수 있고, 말한 대로 행동해야 어떤 일이 일어날 지 알 수 있다고 한다. 따라서 원하는 것을 정확히 말하고 우리 스스로가 어떤 사람인지 주변인 들에게 있는 그대로 알릴 것을 말한다.

 

 

11. 아이들이 스케이트보드를 탈 때는 방해하지 말고 내버려 두어라

우리의 잘잘못을 가감 없이 따져 본 후에도 우리가 부당한 대우를 받을 이유가 없다고 확신한다면, 누군가 우리를 이용하게 있는 게 분명하고, 이럴 때는 우리의 입장을 강력하게 주장해야 하는데 이는 이것이 우리를 지키기 위한 도덕적 의무이기 때문이라 말한다. 또한 누군가를 비판해야 할 때는 잘못된 행위에 대한 세 개 이상의 증거를 찾아서 스스로 비판의 정당성을 입증하면 좋다고 말한다. 이렇게 할 경우 상대가 우리의 주장에 반박하더라도 논리적으로 재반박이 가능하며, 즉석에서 네 개 이상의 변명거리를 생각해 낼 사람은 거의 없다고 한다.

 

 

12. 길에서 고양이를 마주치면 쓰다듬어 주어라

None.

 

"완전히 깨우친 사람은 없다. 더 많은 것을 깨달아 가는 사람만 있을 뿐이다." - 조던 피터슨

 

별점: ⭐️⭐️⭐️⭐️

완독: 2019년

[제목] Attention is all you need

[학회] NIPS

[년도] 2018년

[주저자] Google Researcher

 

오늘은 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 모델의 단점을 잘 설명하는 그림은 아래와 같습니다.

[Figure 1] RNN을 이용한 번역 (영어 --> 한글)

참고로 RNN의 경우 NMT(Neural Machine Translation)에서 사용되며 위 그림은 영어를 한글로 번역하는 것을 나타내었습니다. 강아지가 소시지를 먹는다 또는 좋아한다를 예측하기 위해 likes를 참조합니다. 하지만 likes라는 단어는 여러번의 hidden layer를 거치면서 그 의미가 희석되었을 확률이 높습니다. 

 

따라서 이러한 RNN의 단점을 극복하기 위해 나온 개념이 아래와 같이 attention이 추가된 RNN 입니다.

 

[Figure 2] RNN with attention model

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 모델의 두 단점을 극복하고자 하였습니다. 

 

[Figure 3] self-attention machnism

기존의 output word를 예측할 때만 attention을 사용했던 기존 모델과 달리 Transformer는 sequence 내의 단어 관계 정보를 self-attention을 사용하여 미리 계산해둡니다. 이를 통해 Transformer는 다음 단어를 효율적으로 예측하게 됩니다. 여기서 효율적이라는 의미는 RNN with attention 모델의 단점이었던 계산 복잡도를 줄였다고 볼 수 있습니다. 

 

 

Trasnformer 모델 아키텍처


self-attention 메커니즘이 들어간 transformer의 핵심 아키텍처는 아래와 같습니다. 

 

[Figure 4] Transformer model architecture

크게 Encoder와 Decoder로 나뉘어져 있습니다. Encoder와 Decoder의 경우 둘 모두 크게 3가지로 Positional Encoding, Multi-Head Attention과 Feed Forward NN이 사용되는 것을 확인할 수 있습니다. 논문에서는 Encoder와 Decoder의 N 값을 6으로 주어 Transformer 모델을 구성했다고 합니다. 이를 입체적으로 나타내면 아래와 같습니다.

[Figure 5] Transformer model architecture

전반적으로 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을 구하기 위한 가장 작은 단위입니다. 

[Figure 6] Scaled Dot Product Attention

Scaled Dot-Product Attention은 전반적으로 두 개의 행렬 K와 행렬 Q의 multiplication을 통해 나머지 행렬 V 내의 정보를 추출하는 과정이라 할 수 있습니다. 구체적인 내용은 아래와 같습니다.

 

[Figure 7] Scaled Dot-Product Attention

행렬 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을 병렬적으로 사용한 것이라 볼 수 있습니다.

[Figure 8] Multi-Head 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배 가량 계산 효율성이 좋을 것을 확인할 수 있습니다. 

 

 

Reference


https://machinereads.wordpress.com/2018/09/26/attention-is-all-you-need/

https://velog.io/@dscwinterstudy/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D2-8%EC%9E%A5

https://machinereads.wordpress.com/2018/09/26/attention-is-all-you-need/

https://melon-buffer-f27.notion.site/Attention-is-All-You-Need-d484b19f68a54d589cfdb2d76495c73c

https://omicro03.medium.com/attention-is-all-you-need-transformer-paper-정리-83066192d9ab

http://ko.gravatar.com/harperpark

https://tech.kakaoenterprise.com/45

 

자유란 무엇인가?

이 책의 전반적인 내용은 개인의 자유와 권리, 다양한 삶의 방식들의 존중에 대한 내용이 주를 이룬다.

책을 읽는 동안 과연 나는 이와 같이 생각이 가능한가?라고 자문 하였을 때 단언컨데 아니었다. 자유를 두고 양심, 의견, 토론, 행동 등의 다양한 각도에서 이를 다룬다. 읽으며 들었던 생각은 책의 표지의 문구인 "우리가 누리는 자유는 『자유론』에 빚지고 있다."와 같았다. 자유에 대해 내가 알고 있던 것은 이 책을 벗어나지 못했다. 저자인 철학가 존 스튜어드 밀의 다각도적이고 뛰어난 사고에 대해 조촐한 나의 생각과 비교가 되며 좌절감이 들기도 하였다. 하지만 동시에 깊은 사고의 세계가 있음을 알게 되었고 더욱이 철학에 관심을 가지는 계기가 되어준 책이다.

밀은 한 개인의 의견과 행동이 아무리 옳다고 할지라도, 거기에 진리의 모든 것이 다 담겨 있을 수는 없다하였다. 아무리 옳은 것이라 할지라도, 거기에는 틀린 것이 있고, 아무리 틀린 것이라고 할지라도, 거기에는 옳은 것이 있다는 것이다. 그렇기 때문에, 모든 개개인에게 의견을 표현할 수 있는 "사상의 자유"와 자신의 의견을 거리낌 없이 표현하고 토론할 수 있는 "표현의 자유"가 반드시 필요하다고 말한다.

또한 이런 자유들을 허용하지 않는 것은 어떤 개인이나 집단이 "절대로 틀릴 수 없다"는 것을 전제하는 것이고, 그것은 독단이자 독선이며 독재라고 표현하며, 어떤 의견이 아무리 틀리고 사회의 상식에 어긋나는 것이라고 할지라도 그 의견을 표현하고 토론하는 자유를 막는 것보다도 허용하는 것이 사회에 더 큰 이득이 된다고 하였다. 만약 개인의 의견을 침묵시키게 된다면 크게 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 동작 과정

첫 번째로 가장 가까운 이웃을 찾고 두 번째로 가중치 행렬을 구성한 다음 부분적으로 고유치를 분해하는 방식으로 동작한다. LLE는 기본적으로 isomap 방식과 목적은 동일하지만 Locality를 어떻게 수학적으로 반영하냐에 따라 ISOMAP의 차이가 발생한다.

 

ISOMAP은 1952년에 만들어진 것으로 다차원 스케일링(MDS) 또는 주성분 분석(PCA) 두 방법론을 결합한 방법이다. 모든 점 사이의 측지 거리를 유지하는 더 낮은 차원의 임베딩을 찾는다. 측지 거리란 두 측점 사이의 타원 체면을 따라 이뤄진 거리를 말한다. 

ISOMAP

위 그림을 보면 두 점은 유클리디안 거리로는 가깝지만 실제 측지 거리는 색깔이 나타내는 의미만큼 멀리 떨어져 위치함을 알 수 있다. 즉, Isomap 알고리즘은 두 데이터간의 실제 특징을 반영하는 거리 정보를 사용하는 효과적인 차원 축소를 추구한다. 

 

MDS는 다차원척도법으로 D차원 공간 상의 데이터가 있을 때 그 데이터 간의 거리가 저차원 공간상에서도 최대한 보존되도록 하는 벡터를 찾는 방법이다.

 

Auto Encoder는 실제 공간에 표현된 데이터를 보다 잘 표현할 수 있는 잠재 공간(latent space)를 찾아 축소하는 방법이다. 데이터를 잠재 공간으로 압축하는 encoder와, 잠재공간을 이용해 원래 데이터로 복원시키는 decoder를 사용한다.

 

 

Reference

1. 양자 컴퓨팅

1.1 중첩과 얽힘

큐비트의 동작을 위해 중첩(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와 같은 플랫폼은 큐빗 제어를 위해 논리게이트를 사용한다. 양자 어닐링 컴퓨터는 논리 게이트인 양자 게이트가 없기에 큐빗의 상태를 완전히 제어할 수 없다는 특징을 갖는다. 다만 단열 정리에 의해 큐빗의 동작을 예측할 수 있는데 이를 통해 에너지 최소화 문제를 해결할 때 유용하다는 특징이 있다. 다르게 말하면 양자 어닐링을 통해, 탐색 공간이 국소적 최소값에 이산적인 조합 최적화 문제에 주로 사용된다. 이러한 특징을 이용하는 회사가 디웨이브이다. 디웨이브의 시스템들은 큐빗이 에너지 상태를 최소화하는 경향이 있다는 것을 이용한다.

참고로 양자 어닐링을 통한 컴퓨팅에서의 단점은 쇼어알고리즘을 실행시킬 수 없으며 이는 큰 파장을 불러 일으킨 적 있다.

 

합성곱 신경망(Convolutional Neural Network, CNN)

합성공 신경망은 이미지 데이터를 학습하고 인식하는데 특화된 알고리즘에 해당한다. 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)이라고 하며 필터를 어떻게 설정할지에 따라 피처맵이 달라진다.

 

Reference

[1] https://ellun.tistory.com/104
[2] cnn이란-합성곱-신경망의-구조-알아보기
[3] [딥러닝] 합성곱 신경망, CNN(Convolutional Neural Network) - 이론편
[4] 06. 합성곱 신경망 - Convolutional Neural Networks
[5] 합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘
[6] CNN, Convolutional Neural Network 요약

 

목차

  • 인공지능의 개념
  • 최초의 계산 시스템
  • 인공지능의 역사
  • 앨런튜링 - 인공지능의 개념적 토대를 놓다
  • 다트머스 컨퍼런스
  • 기호주의와 연결주의
  • 첫 번째 AI 겨울과 AI의 부활
  • 두 번째 AI 겨울과 AI의 부활

 

인공지능의 개념

 

인공지능은 인간의 학습능력, 추론능력, 지각능력, 자연언어의 이해능력 등을 포함하는, 지능을 갖춘 컴퓨터 프로그램을 의미한다[1]. 이러한 인공지능의 목표로는 연산속도가 빠른 컴퓨터에 인간의 지능을 부여함으로써 효율적인 문제 해결을 도모하기 위함이다. 이러한 인공지능에 대해 이후에 언급될 지능과 생각 등이 무엇인가에 대한 튜링 테스트나 중국어 방 사고실험과 같은 철학적 관점의 문제가 제기되기도 한다.

 

최초의 계산 시스템

 

Pascaline최초의 계산기라 불리는 시스템은 1642년에 파스칼이라는 학자가 고안한 것으로, 파스칼린이라는 이름의 계산기로 세금계산서에 나오는 덧셈과 뺄셈을 위해 만들어졌다. 이후 1672년경에 철학자인 라이츠니츠가 곱셈을 처리할 수 있는 계산기를 고안했고 1694년에 Stepped reckoner라는 이름으로 완성되었는데, 이러한 라이프니츠의 업적은 0과 1 혹은 On과 Off로 표시할 수 있는 이진법을 개발해 현대식 컴퓨터(디지털) 개발에 초석을 놓았다는점에 의미가 있다. 이후 1822년 찰스 배비지는 조금 더 현대적인 의미의 컴퓨터를 고안하였고, “차분기관”이라하여 명령들을 해석하며 계산을 실행하는 기계 즉, 프로그래밍 가능한 컴퓨터를 설계하고 제작을 시도하였다.

 

Stepped reckoner

 

인공지능의 역사

1943년 논리학자인 윌터 피츠와 신경과학자인 워렌 맥컬럭이 “A Logical Calculus of Ideas Immanent In Nervous Activity”라는 논문에서 인간의 사고 메커니즘에 해당하는 뉴런의 작용을 0과 1로 이루어지는 이진법 논리 모델로 설명하였고 1946년 범용 컴퓨터인 ‘에니악(ENIAC)’의 등장 이후부터 컴퓨터 연구와 함께 인공지능에 대한 연구가 진행되었다.

 

앨런튜링 - 인공지능의 개념적 토대를 놓다

이후 1950년 영국의 수학자인 앨런 튜링은 “Computing Machinery and Intelligence”라는 논문을 발표하였는데, 해당 논문은 생각하는 기계의 구현 가능성에 대한 것으로 “기계가 생각할 수 있는가?”라는 물음을 통해 그 유명한 튜링 테스트가 고안되었고 또한 인공지능에 대한 개념적 토대를 놓게 되었다.

 

다트머스 컨퍼런스

1940년대와 1950년대에 이르러 다양한 영역의 과학으로부터 인공적인 두뇌의 가능성이 논의되었고, 1956년에 마빈 민스키와 존 매카시 등이 개최한 다트머스 컨퍼런스를 통해 현재 AI라 불리는 용어가 정립 되었으며 AI가 학문의 분야로 들어오는 계기가 되었다. 이 컨퍼런스에서 참석자들은 튜링의 ‘생각하는 기계’를 구체화하고 논리와 형식을 갖춘 시스템으로 이행시키는 방법을 두달간 논의하였다. 다트머스 컨퍼런스 이후 AI라는 새로운 학문은 대수학 문제를 풀고, 기하학의 정리를 증명하고, 영어를 학습 등의 발전의 땅을 질주하게 되었다.

 

이렇게 인공지능에 대한 개념적 토대를 놓은 1950년대의 인공지능 연구는 크게 두 분야인 기호주의와 연결주의로 나뉘었다. 기호주의는 인간의 지능과 지식을 기호화, 메뉴얼화하고 이를 따르는 컴퓨터가 있으면 문제 해결이 가능하다는 전제를 기반으로 하며, 이와 관련한 문제로는 체스, 미로, 퍼즐 등이 있다. 이러한 기호주의의 특징은 논리로 해결할 수 있는 문제, 메뉴얼화가 가능한 분야에 강하다는 장점이 존재하며, 영상인식이나 음성인식과 같은 논리로 설명하기 어려운 문제에 약하다는 단점이 있다. 기호주의의 성과로는 수학, 퍼즐, 체스, 미로등과 같은 논리적인 문제를 해결할 수 있게 되었으며 인간과 대화할 수 있는 챗봇이 탄생하게 되었다.

 

이렇게 현실적으로 실현 가능하고 인공지능 기술의 기초가 되는 접근법인 기호주의 분야가 사람들의 관심을 받고 있었으나 1958년 프랭크 로젠블랫이 인공신경망(ANN)의 기본이 되는 알고리즘인 퍼셉트론(Perceptron)을 고안하게 되었고, 사람들의 사진을 대상으로 남자/여자를 구별해내게 되면서 뉴욕 타임즈에 실리게 되었고 이후 인공지능 연구의 트렌드가 기호주의에서 연결주의로 넘어오게 되는 계기가 되었다.

 

연결주의의 경우 뇌 신경 네트워크의 재현을 목표로 하는 접근법으로, 인공지능 학습에 있어 좋은 경험(정보)가 있으면 문제를 해결할 수 있다는 전제를 기반으로 한다. 인간 또한 어떠한 방법을 통해 생각 하는지 알지 못하기에 말로 설명할 수 없는 문제의 경우 경험으로 배우는 것이 효과적이라는 것으로 현재의 기계학습으로 연결된다. 이러한 연결주의의 특징으로는 인간이 메뉴얼로 만들 수 없는 복잡한 문제여도 인공지능이 스스로 답을 찾을 수 있다는 점이다. 이러한 연결주의의 성과를 통해 앞서 언급한 퍼셉트론이 탄생하게 되었다.

기존의 기호주의를 이끌던 마빈 민스키는 연결주의에 비판적인 시각으로 1969년 『퍼셉트론』이라는 책을 출간하면서 기존의 연결주의의 한계 즉, 퍼셉트론의 한계를 수학적으로 증명하게 된다. 퍼셉트론의 경우 XOR 연산이 근본적으로 불가능한 모델이며, 실생활 적용에 있어 한정적이라는 사실을 비판하게 되면서 연결주의에 투자되어 있던 자금이 빠지기 시작하고, 1971년 로젠 블랫의 사망, P-NP 문제와 같은 기호주의의 한계를 다루는 논문이 인공지능이 조합의 증가(Combinational Explosion)을 다룰 수 없다고 발표되면서 소위 AI Winter라 불리는 시기가 15년동안 지속되는 계기가 되었다.

 

첫 번째 AI 겨울과 AI의 부활

마빈 민스키에 의해 퍼셉트론은 AND, OR, NAND와 같은 선형문제는 해결할 수 있으나, XOR과 같은 비선형 문제는 선형분리가 불가능하다는 한계로 인해 도래했던 첫 번째 AI 겨울은, 1986년 현재 딥러닝의 아버지라 불리는 제프리 힌튼 교수가 다층 퍼셉트론(Multi-Layer Perceptron)과 역전파(Backpropagation) 알고리즘을 제시하면서 기존의 XOR의 한계를 극복할 수 있는 것을 실험적으로 증명하게 되면서 AI가 부활하게 되었다.

 

정확히는, 1974년 하버드대의 Paul Werbos가 퍼셉트론 환경에서의 학습을 가능하게 하는 역전파 알고리즘을 고안하였고 인공지능에 대한 침체한 분위기 속 8년 후인 1982년 논문이 발표되었다. 또한 1982년 물리학자인 John Hopfield는 완벽히 새로운 경로에서 정보를 처리하고 학습할 수 있는 신경망의 형태를 증명하였고, 이 시기에 David Rumelhar는(Paul Werbos에 의해 발견된) 역전파라 불리는 신경망을 개선하기 위한 새로운 방법을 알리고 있었다. 이후 역전파 알고리즘과 다층 퍼셉트론은 1984년 얀 르쿤에 의해 다시 세상 밖으로 나오게 되었고, 병렬처리 형태로부터 영감을 받아 1986년 제프리 힌튼에 의해 세상에 알려지게 되었다.

 

두 번째 AI 겨울과 AI의 부활

다층 퍼셉트론과 역전파 알고리즘을 기반으로 1990년대 초반까지 문자 인식 및 음성 인식과 같은 프로그램의 구동 엔진으로 사용되면서 인공지능 연구에 발전을 이루었으나 Vanishing Graidnet(그래디언트 소실)과 Overfitting(과적합) 문제, 컴퓨팅 파워와 같은 한계점이 발견되면서 AI의 두 번째 겨울을 맞이하게 되었다. 하지만 꿋꿋히 인공신경망을 연구해오던 제프리 힌튼 교수는 2006년 “A fast learning algorithm for deep belief nets”라는 논문을 통해 신경망의 가중치의 초기값을 잘 설정한다면 DNN(Deep Neural Network)을 통한 학습이 가능하다는 것을 밝혀내면서 본격적으로 딥러닝이라는 용어가 사용되기 시작했으며, 2012년 제프리 힌튼 팀이 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)라는 이미지 인식 경진대회에서 AlexNet라는 모델을 통해 당시 매우 힘든일이라 판단되었던 오류율을 큰 폭으로 낮추게 되면서 압도적인 우승을 차지했고 이후 다시금 AI의 부흥기가 시작 되었다.

 

Reference

[1] https://ko.wikipedia.org/wiki/인공지능
[2] https://brunch.co.kr/@storypop/28
[3] https://insilicogen.com/blog/340
[4] https://pgr21.com/freedom/57391
[5] Logo

+ Recent posts