본문 바로가기

전체 글

(48)
(밑바닥부터 시작하는 딥러닝) 7장. 합성곱 신경망(CNN) 합성곱 신경망은 이미지 인식 분야에서 주로 쓰인다. 완전연결 계층은 평탄화하여 데이터 형상이 무시되는데 CNN은 이를 보완해준다. 지역적인 부분에 대해서 특징을 추출한다는 것이 CNN의 장점이다. CNN을 활용한 네트워크 CNN 계층은 Conv - Relu - Pooling의 흐름으로 연결된다. 출력에 가까운 층에서는 Affine-Relu 구성을 사용한다. 합성곱 계층 합성곱 계층은 합성곱 연산, 패딩, 스트라이드로 구성된다. 합성곱 연산 필터를 일정 간격으로 이동해가며 입력 데이터에 적용한다. 패딩 입력 데이터 주변을 특정값으로 채우는 기법이다. 스트라이드 필터를 적용하는 위치의 간격을 스트라이드라고 한다. 출력 크기 필터, 패딩, 스트라이드에 따라 출력 shape가 달라지게 된다. 입력 크기를 (H,..
PRML 2021 1일차, Recent Advances in Autoregressive models and VAE 이 글은 정보과학회에서 진행하는 PRML 2021의 첫 번째 세션인 김세훈님의 Recent Advances in Autoregressive models and VAE에 대한 포스트이다. introduction 모든 Generative model의 목적은 자신에게 주어진 여러 정보를 통해 모르는 정보를 예측하는 것이다. Generative model 중 하나인 Autoregressive Model은 자신의 과거의 예측이 이후 예측에 영향을 준다는 것이다. 이 모델을 이미지에 적용하면 다음그림과 같이 표현할 수 있다. 과거 데이터인 왼쪽, 위 픽셀을 가지고, 현재 픽셀을 예측하는 것이다. Autoregressive Model은 다음 그림처럼 순서대로 이뤄진다. 맨 처음 1*1 픽셀이 주어지면 오른쪽 아래로 ..
(밑바닥부터 시작하는 딥러닝) 6장. 학습 관련 기술들 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 가능한 낮추는 매개변수를 찾는 것이고, 이를 최적화(optimization)이라고 한다. 확률적 경사 하강법(SGD) 5장에서 매개변수의 기울기를 구해, 기울어진 방향으로 매개변수 값을 갱신하는 일을 몇 번이고 반복해서 점점 최적의 값으로 다가갔다. 이는 SGD라는 방법이다. W : 갱신할 가중치 매개변수 η : 학습률 class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): params[key] -= self.lr * grads[key] 아래와 같이 사용할 수 있다. network = TwoLayerNet(...
(밑바닥부터 시작하는 딥러닝) 5장. 오차역전파법 수치 미분은 간단하지만 계산 시간이 오래 걸린다는 단점이 있다. 이러한 단점을 오차역전파법(backpropagation)을 통해 해결할 수 있었다. 계산 그래프 노드: 연산을 표현 에지 : 입력과 출력되는 데이터를 표현 사과에서 가격까지가는 방향으로 퍼져가는 것을 순전파 반대 방향으로 퍼지는 것을 역전파라고 합니다. 역전파 역전파는 output에서 input 방향으로 진행한다. 역전파로 갈 때는 미분값을 활용한다. 계산그래프의 연산 구현 덧셈 계층 class AddLayer: def __init__(self): pass def forward(self, x, y): out = x + y return out def backward(self, dout): dx = dout * 1 dy = dout * 1 re..
(밑바닥부터 시작하는 딥러닝) 4장. 신경망 학습 패러다임의 변화 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 기계학습은 데이터에서 패턴을 발견하여 학습한다. 이미지에서 '5'라는 숫자를 인식하는 프로그램을 구현한다고 해보자. 손글씨를 보고 5라는 숫자를 직접 코드를 짜는 것은 어렵습니다. 초기에는 사람이 생각한 알고리즘으로 시도를 했다. 이후에는 이미지에서 사람이 생각하는 특징을 추출(SIFT, SURF, HOG)하고, 그 특징의 패턴을 기계학습 기술(SVM, KNN)로 학습하였다. 이 방식에서 더욱 발전하여 이후에는 완전히 데이터를 기계가 학습하는 방식의 딥러닝을 활용하였다. 손실함수 최적의 매개변수 값을 설정하기 위해서는 평가할 수 있는 지표가 필요하다. 신경망 학습에서는 손실 함수를 사용한다. 오차제곱합 ..
(밑바닥부터 시작하는 딥러닝) 3장. 신경망 활성화함수 활성화 함수는(activation function)은 입력 신호의 총합을 출력신호로 변환하는 함수를 의미한다. 계단함수 시그모이드 함수 Relu Leaky-Relu Code def step_function(x): # 인풋은 numpy array y = x > 0 return y.astype(np.int) def sigmoid(x): return 1 / (1 + np.exp(-x)) def relu(x): return np.maximum(0, x) def leaky_relu(x): return np.maximum(0.1*x, x) Graph 출력층의 활성화함수 출력층의 활성화 함수는 원하는 문제의 유형에 따라서 달라진다. 회귀 수치를 예측, 출력층에 항등함수 사용 ex) 점수 0~100점 예측 ..
(밑바닥부터 시작하는 딥러닝) 2장. 퍼셉트론 퍼셉트론 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 것을 말한다. 입력신호인 x1과 x2를 넣으면 가중치인 w1과 w2에 각각 곱해진 후 더해진다. 만약 이 값이 특정 역치값(theta)보다 크면 1, 작으면 0을 return한다. 논리 회로 논리 회로는 AND, OR, NAND, XOR 게이트가 있다. AND 게이트 입력이 모두 참일 때 출력도 참이다. def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(x*w) + b if tmp
Motion Planning Among Dynamic, Decision-Making Agents with Deep Reinforcement Learning review 본 포스트는 Motion Planning Among Dynamic, Decision-Making Agents with Deep Reinforcement Learning의 리뷰이다. Abstact 로봇에서 사람들 사이를 부딪히지 않으면서 안전하고, 효과적으로 주행하는 것은 중요한 문제이다. 본 연구에서는 LSTM을 사용해서 사람들의 수가 몇 명이든지 주행할 수 있었다. 또한 이 알고리즘은 시뮬레이션 그리고 현실에서도 사람들 사이를 주행을 부드럽게 할 수 있었다. 사람들을 피하는 방법은 다음과 같은 단계로 발전하였다. 사람들이 고정되었다고 가정하고, 회피할 수 있을만큼 재빨리 re-plan 사람들을 움직인다고 생각하지만, 같은 속도로 운동한다고 가정 사람들이 known or unknown policies에 ..