● 이번에는 이미지에 대한 잠재 공간을 생성하는 오토 인코더(AutoEncoder)에 대해 살펴봅시다.
● 오토 인코더의 구조는 아주 간단합니다. 입력 그대로를 출력하는 딥러닝 모델입니다. 우리는 여기서 은닉층을 주목할 필요가 있습니다.
● 여기서의 은닉층의 노드 수는 입력 값의 노드 수보다 적습니다. 즉, 한정된 은닉층을 갖기에 정보를 압축할 수밖에 없습니다. 병목(Bottleneck)이라고 불리는 이 곳에서 생성되는 벡터는 이미지 잠재 공간을 형성합니다. 즉, 워드투벡에서와 같이 계산을 가능하게 합니다.
● 사람의 얼굴에서 웃음끼를 -1, -2, -3 할 수 있으며, 역으로 더할 수도 있습니다. 아래와 같이 잠재 공간에서는 이미지 모핑 작업을 할 수도 있게 됩니다.
● 잠재공간을 정리해봅시다. 한마디로 표현하자면 비정형 데이터에 있는 특성을 계산이 가능하도록 수치화한 공간이라 할 수 있습니다.
● 잠재 공간에서의 기준을 무엇으로 잡느냐에 따라 유사도에 따른 배치가 달라질 것입니다. 특성이 비슷할수록 잠재 공간 내에서의 위치는 가까워지게 됩니다.
● 학습은 추상화의 놀음입니다. 결국 추상화의 전당인 딥러닝 내의 잠재 공간으로 인해 특정 기준에 따른 유사도를 판정할 수 있게 되어 어느 단어와의 상관관계 등을 추정할 수 있게 됩니다.
● 이러한 기법이 고도화된다면 설문이나 조사가 없이도 여론이나 만족도 결과를 정확히 파악하고 예측할 수 있게 되지 않을까 합니다. 물론 이 사람이 나와 잘 맞을까, 최적의 결혼 상대일까도 알아맞혀 줄 수도 있지 않을까요? 지켜보기로 합시다.
<산에서 내려올 때에는 능선을 타고 오르내려야 합니다.>
● 인공지능으로 완벽함을 추구하는 사람은 발생할 수 있는 모든 가능성을 탐색하고자 합니다. 그로부터 발생할 수 있는 일에 대해 대비책을 꼼꼼하게 세워두기 위함이죠.
● 그런데 문제가 있습니다. 모든 가능성을 탐색하는 것은 사실상 불가능하기 때문입니다. 컴퓨터를 가지고도 이를 시도해본다한들 컴퓨팅 파워의 부족으로 며칠밤도 모자라 몇 달의 시간을 날려버릴 수도 있습니다.
● 이럴 떄 우리는 어떻게 해야 할까요? 눈물을 머금고 능력 부족을 절감하며 단념해야 할까요?

● 우리는 융통성을 발휘해야 합니다. 완벽함의 기준을 조금 내려놓고, 계산 복잡도에 따른 시간의 소요를 좀 더 고려해보는 것이죠.
● 탐색을 하고자 하는 공간이 너무 복잡해서 쉽게 최적화하기 어려운 문제일 경우에는 전체의 지형을 전부 파악하기가 어렵습니다. 그렇기 때문에 지역적으로 제한된 정보만을 갖고 문제를 해결해야 합니다.
● 즉, 현재 상황에서 할 수 있는 행동의 목록만을 고려할 뿐입니다. 이를 반복하다보면 비용 함수의 값을 최소화하는 최적의 가중치 값에 도달하거나 이에 근사하지 않을까 기대하는 것입니다.
● 물론 기대가 현실로 이어지지 않는 경우도 많습니다. 이는 지역적(국지적)으로 최적화된 가중치의 값이 전역적(전체적)으로 최적화된 가중치의 값이 되리라는 보장이 없다는 말입니다.

● 문제 해결의 가장 중요한 변수는 바로 '시간'입니다. 우리에게는 시간이 많지 않습니다. 시간을 줄이기 위해서 우리가 지금 이 순간 그저 할 수 있는 것에 집중해야 합니다.
● 딥러닝의 학습에서도 이러한 아이디어를 적용하고있습니다. 예를 들어보죠. 눈을 가리고 있는 상태에서 우리는 제주도의 높은 산봉우리에서 평지로 내려와 집으로 가야 합니다. 어떻게 해야 할까요?
● 그저 내가 서 있는 위치에서 한 발자국씩 내딛는 것 외에 할 수 있는 것이 없습니다. 어느 방향으로 발자국을 향해야 할까요? 네, 경사가 낮아지는 방향으로입니다. 즉, 목적함수(평균제곱오차, MSE)의 값을 가장 많이 줄여주는 방향인 것이죠. 이를 경사 하강법이라고 합니다.. 경사 하강법은 뒤에서 한번 더 정리해보겠습니다.
● 목적함수(평균제곱오차, MSE)의 값에 -1을 곱하여 제주도 한라산 백록담을 찍게 하는 문제로 탈바꿈시킬 수도 있습니다. 이를 급경사 탐색법이라고 합니다. 이 글에서는 경사 하강법을 다뤄보도록 하겠습니다.
● 산봉우리에서 내려온다고 가정했을 때, 전체의 지형을 보지 못하므로 경사가 내려가는 방향으로 한 발자국씩 내디뎌봅니다.. 다다른 곳이 위의 그림에서와 같이 지역 최솟값일 수 있습니다(거의 대부분 그럴 겁니다).
● 경사 하강의 목적은 기울기를 계산하여 낮은 곳으로 내려가는 것입니다. 즉, 산을 올라가는 방향으로는 움직이지 못한다는 말입니다. 이러한 문제점을 극복하기 위해서 사람들이 낸 묘안이 있습니다.
● 먼저, 관성의 개념을 도입해서 방향성을 부여합니다. 즉, 작은 봉우리는 가던 힘으로 가볍게 뛰어넘거나 지나치게 만드는 것이죠.
'인공지능 (AI)' 카테고리의 다른 글
32번째 이야기 - 다중퍼셉트론, MLP, 합성곱 신경망, CNN, 다중퍼셉트론 단점 (0) | 2022.11.21 |
---|---|
31번째 이야기 - 모의 담금질(Simulated Annealing) 알고리즘, 경사하강법, gradient descent (0) | 2022.11.21 |
29번째 이야기 - 머신러닝, 기계학습, 준지도학습, 자기주도학습 (0) | 2022.11.21 |
28번째 이야기 - 비선형 데이터, 신경망의 구조, 마스터 알고리즘, (0) | 2022.11.04 |
27번째 이야기 - 연결주의, 인공신경망, 심층 신경망, 렐루 함수, RELU 활성화 함수 (2) | 2022.11.04 |
댓글