목록AI/딥러닝 기초 (11)
꺼내먹는지식 준
앙상블 : 싱글 모델보다 더 나은 성능을 위해 서로 다른 여러 학습 모델을 사용하는 것 실제 기업들에서는 딥러닝 모델로 앙상블을 하는 경우는 드물다. 성능 향상 대비 computational cost 가 너무 크다. 기존 만든 여러 모델과 weight들을 버리지말고 결합해서 좀 더 좋은 결과를 만들고자 하는 방법 (각자 잘하는 부분이 다르다.) 딥러닝의 경우 앙상블을 이야기 할 때, 일반적으로 variance가 높아서 overfitting이 일어난다.(데이터가 많아서) (물론 data가 작으면 bias가 높기도하다.) Boosting Algorithm 보통 bias가 높은 모델들을 앙상블 하는 기법이 boosting 순차적으로 학습을 진행하면서 조금 더 나은 방향으로 fitting 되도록 하는 것 (ex..
신경망에 대한 이해가 잘 되어 있다고 생각해도, 시각적으로 정리를 한번 하면 여러 인사이트를 얻을 수 있다고 생각한다. 다음의 정리를 보자. 모든 내용과 자료는 유튜브 3blue1 강의를 참고하였다. 설명 내용은 탑 다운 방식으로 점차 세부적인 내용이 설명 된다. 신경망은 어떻게 작동하는가? 다음의 숫자가 적힌 28 $\times$ 28 크기의 이미지가 있다고 하자. (28 $\times$ 28 크기의 뉴런) 각 뉴런들은 픽셀은 밝기에 따라 [0, 1] 값을 가지고 있다. 1에 가까울 때, 각각의 신경망이 더 큰 정도로 활성화된다. 신경망에 입력으로 주어지기 위하여 1차원으로 정렬한다. 정렬된 784 크기의 입력이 입력층으로 들어간다. 이미지에 적힌 숫자에 따라 활성화 된 뉴런이 다르다. 출력층은 우리가..
Deap Learning의 최적화 최적화에서 용어들을 명확하게 집고 넘어가야 연구자들끼리 대화에 불편함이 없다. 용어의 중요성을 늘 기억하자. Gradient Descent 1st order descent 찾고자 하는 parameter에 대해서 loss function을 편미분해서 학습을 하겠다. 반복적으로 최적화 한다. 단, local minumum 으로 갈 수밖에 없다. 최적화의 중요 컨셉 Generalization (일반화 성능) Training error 가 0이어도, 항상 최적 값에 도달했다는 보장은 없다. 어느정도 시간이 지나면, test error 에 대해서는 성능이 오히려 떨어진다. Generalization performance 라는 건 주로, test error 와 train error..
Multi Layer Perceptron 에 대한 설명은 블로그의 글을 참고하자. Pytorch 로 Multi layer Perceptron 의 간단 구현 내용만 정리할 예정이다. import numpy as np import matplotlib.pyplot as plt import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F %matplotlib inline from torchvision import datasets,transforms mnist_train = datasets.MNIST(root='./data/',train=True,transform=transforms.ToTensor(),d..
Neural Net 포유류의 뇌 신경망을 모방하고자 하는 시스템, 다만 에매하게 모방을 했다. 사람이 날고 싶어서 새를 모방한 기계를 만들었었다. 라이트 형제가 만든 비행기는 새처럼 생기지 않았었다. 최근에는 더 다르다. 뉴런도 마찬가지다. 처음에는 동작 방법을 모방에서 시작을 했지만, 최근 트렌드는 모방과는 너무 다르게 갈라졌다. 이에 따라 왜 잘 되는지를 모델 자체만 놓고 수학적으로 분석하는 것이 더 좋을 수 있다. 뉴럴 네트워크는 행렬을 곱하고 비선형 연산이 반복적으로 이루어져 우리가 만들고자 하는 function 의 function approximator이다. Linear Neural Network 기울기가 있고 절편이 있다. 즉 2개의 파라미터. 출력값과 우리의 예측값의 차이를 줄이는 것이 목표..
딥러닝의 가장 중요한 역량 3가지 1. 구현 실력 아이디어 구현 능력 2. 수학 능력 선형 대수학, 통계 3. 연구 트랜드를 알기 인공지능이란? 사람의 지능을 모방 머신러닝은 이 중 한 분야 이 내부 중 뉴럴 넷을 사용하는 세부 분야가 딥러닝 딥러닝의 4가지 중요 요소 1. 모델이 학습할 수 있는 Data ex. 글, 사진 등 2. 모델 ex. RNN CNN MLP 3. Loss function 4. Loss funcion 최소화 algorithm ex. optimizer (SGD, Ada delta, ADAM) Data Classification, Segmentic segmentation(No objects just pixels 즉 각 이미지의 픽셀별로 분류 dense classification) , ..
오늘날의 딥러닝은 큰 데이터가 성능을 결정짓는다. 연구가 장비빨이라는 말도 나온다. 즉, Multi-GPU 를 다룰 줄 아는 것은 필수이다. Node : Node는 주로 system, 컴퓨터를 뜻한다. ex) Single Node Single GPU 한대 컴퓨터 안의 한대 컴퓨터 Signle Node Multi GPU 한대 컴퓨터 여러대 GPU Multi Node Multi GPU 여러대 컴퓨터 여러대 GPU TensorRT (Nvidia 제공, GPU 쉽게 사용할 수 있는 module) Model, Data Parallel 다중 GPU에 합습을 분산하는 방법 1) 모델 병렬화 (Model) 모델을 나눠서 GPU 에서 모델을 병렬로 처리 모델 병렬화는 난이도가 높아서 흔히 사용되지는 않는다. ex) Al..
비선형 모델 신경망 Fully conneceted layer 화살표: 가중치(W) 선형 모델에 해결하고자 하는 문제에 따라 다른 비선형 활성화 함수가 적용된다. 분류(주어진 데이터가 특정 클래스에 속하는지) 문제를 해결할 경우 softmax 가 필요하다. softmax 소프트맥수 함수는 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산 $\textrm{softmax}(o) = \textrm{softmax(Wx + b)}$ 출력값을 통과시키면 확률벡터를 얻을 수 있다. 특정 클래스에 속할 확률을 파악하고, 분류문제를 풀 수 있다. 추론시에는 최대값만 1로 출력하는 one-hot vector 를 사용한다. ex)[0.3, 0.1, 0.1, 0.1, 0.1, 0.2] $\Rightarrow$ [1, 0, ..
개념적 정리 미분은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구, 최적화에 가장 많이 사용되는 기법이다. 미분은 함수 f 의 주어진 점 (x, f(x))에서의 접선의 기울기를 구한다. 순간 변화율을 알면, 해당 점에서 어느 방향으로 움직여야 함수값이 증가 혹은 감소하는지 알 수 있다. 미분 값을 더해서 함수를 점차 극대화 시키는 것을 경사 상승법 gradient ascent, 미분 값을 더해서 함수를 점차 극소화 시키는 것을 경사 하강법 gradient descent라 한다. (목적 함수 최소화, 극소값으로 이동) 극 값에 도달하면 어차피 미분 값이 0이므로 더이상 움직이지 않게 된다. while(abs(grad) > eps): var = var - lr * grad gard = gradie..
숫자를 가지는 1차원 배열: 벡터 벡터를 원소로 가지는 2차원 배열: 행렬 1) 행렬을 이해하는 방법 1 행렬은 행 벡터를 원소로 가지는 2차원 배열이다. 주로 벡터는 소문자 x, 행렬은 대문자 X 로 표현된다. n 개의 벡터로 이루어진 행렬 X n개의 행과 m개의 열 index는 (행,열) 순 $x_{ij}$ 전치 행렬은 행과 열의 위치를 바꿔준 것, 행렬의 연산에서 많이 사용된다. $x_{ji}$ 벡터가 공간에서 한 점을 의미한다면, 행렬은 여러 점을 의미한다. 즉,행렬을 데이터들의 모임이라 할 때, 행렬의 행벡터 x_{i}는 i 번째 데이터를 의미한다. 각 포인트는 $x_{i}$ ex) i 번째 데이터의 j 번 째 변수 뽑기 행렬의 성분 곱은 벡터의 성분 곱과 같다. 행렬의 곱셈은 벡터의 곱셈과 다..