인공지능/이론 (20) 썸네일형 리스트형 (22) PGGAN (Progressive Growing of GAN) PGGAN(ProGAN)은 고해상도 이미지를 생성하기 위해 제안된 획기적인 기술입니다. 이미지를 해상도별로 학습시켜 비교적 고해상도에서도 안정적인 학습이 가능합니다. PGGAN에는 크게 네가지 아이디어가 존재합니다. 1. Progressive Growing - 점진적으로 해상도를 높여가며 학습합니다. 2. PixelNorm - 기존에 많이 쓰이는 BatchNorm과는 달리 픽셀별로 Normalization 작업을 수행합니다. 3. Equalized Learning Rate - 가중치를 sqrt(2/입력개수)로 나누어 모든 가중치가 동일한 속도로 학습될 수 있도록 합니다. 4. Minibatch Std - Discriminator의 마지막 블록에 해당 레이어를 추가하여 모드 붕괴 현상을 완화합니다. 차근차.. (21) 오토인코더와 GAN 이번 글에서는 오토인코더와 GAN에 대해 알아보도록 하겠습니다. 먼저 오토인코더에 대해 알아보도록 하겠습니다. 오토인코더는 비지도학습에 쓰이는 인공신경망입니다. 레이블이 없는 데이터의 잠재표현을 학습하는 인공 신경망이지요. 다음은 오토인코더의 구조입니다. Encoder와 Decoder로 구성되어있고, 대부분 가운데 은닉층을 기준으로 대칭입니다. x가 입력되면, x가 출력되어야 하는 구조입니다. 잘 학습된 모델에서는 가운데 은닉층의 값이 입력의 특성추출 결과가 될 것입니다. 위의 그림에서는 10차원 데이터를 3차원으로 차원축소한 결과가 되겠네요. 오토인코더의 또 다른 특징으로는 새로운 데이터를 생성할 수 있다는 점입니다. 학습할 때 사용된 x들의 평균 코딩(가운데 은닉층의 값)과 표준편차 코딩을 구하여 가.. (20) 어텐션과 트랜스포머 오늘은 자연어처리 분야에서 혁신적인 아이디어로 큰 기여를 한 두가지 기술인 어텐션과 그를 이용한 트랜스포머를 다루도록 하겠습니다. 먼저 어텐션부터 알아보도록 하겠습니다. 어텐션은 이름에서 알 수 있듯이 각 인코더의 상태 중 집중해야 할 상태에 집중을 합니다. 기존 RNN의 인코더-디코더 구조를 이용한 기계 번역의 예시를 보도록 하겠습니다. Encoder로 들어간 문장 중 어떤 한 단어가 어디에서 번역될지 학습하는 데에는 오랜 시간이 걸리게 됩니다. 이 문제점을 해결하고자 한것이 바로 어텐션입니다. (어텐션의 역할이 어떤 위치에서 어떤 의미가 번역되어야 하는지 도와줍니다.) Encoder의 모든 단어에 대한 상태값을 이용합니다. 각 Decoder 타임스텝에서 어떤 단어에 집중해야 하는지 Encoder의 상.. (19) RNN 구조 인공신경망에는 다양한 신경망 아키텍처가 존재합니다. 그 중에 이번 글에서는 RNN(Recurrent Neural Network)이라는 신경망 아키텍쳐를 알아보도록 하겠습니다. RNN 구조는 시계열 데이터를 쉽게 다룰 수 있는 구조입니다. 예를 들어 주가 예측을 할 수 있고, 또 자연어처리 분야에서 번역을 할 수도 있겠네요. RNN은 기대하는 input의 길이가 없습니다. 즉 임의의 길이를 가진 sequence를 다룰 수 있다는 것입니다. 첫번째로 RNN 구조에 대해 알아보도록 하겠습니다. 위의 사진은 한 개의 뉴런으로 이루어져 있는 RNN 구조입니다. x(input)와 y(output) 그리고 그 다음 타임스텝에 전해지는 h(state)가 있습니다. 오른쪽은 RNN구조를 시간에 따라 펼친 모습입니다. 수.. (18) 컴퓨터 비전 컴퓨터 비전에는 크게 세 가지의 문제가 존재합니다. 크게 분류, 객체 탐지, 시맨틱 분할이 존재합니다. 컴퓨터 비전은 CNN이라는 신경망 아키텍처를 기반으로 많이 발전되고 있습니다. CNN은 합성곱 신경망(Convolutional Neural Network)으로 합성곱 층과 풀링 층이 존재합니다. David H. Hubel과 Torsten Wiesel은 1958년 시각 피질의 구조에 대한 연구를 진행하였고, 시각 피질 안의 뉴런이 국부 수용장(시야의 일부 범위 안에 있는 시각 자극에만 반응한다는 것)을 가진다는 것을 알아냈습니다. 이를 이용하여 인공신경망에서도 각 뉴런들이 국부 수용장을 갖게 한 것이 CNN입니다. 합성곱 층에서는 input image에 일정 크기의 filter를 stride 간격으로 연.. (17) 심층 신경망 심층 신경망을 학습하게 되면 다양한 문제가 존재하게 됩니다. 오늘은 그중에 그래디언트 소실, 폭주 그리고 과대적합 문제에 대해서 다뤄보도록 하겠습니다. 그래디언트 소실은 역전파 과정에서 하위층에 있는 뉴런들에 전해지는 loss는 적어, 일찍 수렴해버리는 문제입니다. 그리고 그래디언트 폭주는 그래디언트 소실과 반대로 하위층에 있는 뉴런들에 전해지는 loss가 너무 커져버리는 문제입니다. 이런 문제들을 해결하기 위해 가중치 초기화 방법을 바꾸거나, 새로운 활성화 함수를 이용합니다. 또는 배치 정규화를 이용합니다. 그래디언트 클리핑으로 폭주문제를 해결할 수도 있습니다. 오늘은 앞서 말씀드린 문제들을 해결하는 총 6가지 방법에 대해 알아보겠습니다. 먼저 새로운 가중치 초기화 방법에 대해 말씀드리겠습니다. (이번.. (16) 인공 신경망 이제부터는 딥러닝에 대해서 알아보도록 하겠습니다. 이번 글에서는 딥러닝에 대한 기초에 대해서 알아볼 것입니다. 퍼셉트론은 아주 간단한 인공 신경망 구조입니다. 입력층과 출력층만 존재하여 두개의 층으로 이루어져 있습니다. 퍼셉트론은 각 노드가 그 다음 노드에 전부 연결되어 있는 밀집층입니다. 각 노드에서 다음 노드로 wx + b의 값을 넘겨줍니다. 여기서 x는 입력층에 들어온 값들의 행렬이고, w는 가중치 행렬입니다. b는 편향 특성입니다. 그리고 출력층에서는 활성화 함수(퍼셉트론에서는 계단함수입니다.)를 거쳐 최종 결과를 도출해냅니다. 인공신경망은 초창기 때 지금처럼의 인기를 얻을 수 없었습니다. 그에 따른 이유도 있었겠지요. 두개의 층으로만 이루어진 인공신경망으로는 그 당시 다른 머신러닝들의 성능에 비.. (15) 비지도학습 지금까지는 입력특성과 레이블이 같이 주어지는 지도학습에 대해서 알아보았습니다. 이번 글에서는 비지도학습의 대표적 알고리즘인 K-means와 DBSCAN에 대해서 알아보도록 하겠습니다. 먼저 K-means 알고리즘에 대해서 알아보도록 하겠습니다. K-means는 centroid라는 클러스터의 중심점을 이용하여 군집화합니다. 과정은 아주 간단합니다. 1. k개 만큼의 centroid를 정의하고, 각 데이터셋은 가장 가까운 centroid에 해당하는 레이블을 가지게 됩니다. 2. centroid를 각 레이블을 가진 데이터셋의 중심으로 정의합니다. 위 과정을 더 이상 centroid가 변경되지 않을때까지 반복합니다. 처음 centroid를 정의하는 데에는 크게 세가지 방법이 존재합니다. 1. 랜덤하게 정의합니다.. 이전 1 2 3 다음