欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World
728x90
반응형

DS | Data Science/ML | Machine Learning 20

[Gradient] Autograd - .backward(gradient = external_grad)

import torch a = torch.tensor([2., 3.], requires_grad=True) b = torch.tensor([6., 4.], requires_grad=True) Q = 3*a**3 - b**2 external_grad = torch.tensor([1., 1.]) Q.backward(gradient=external_grad) 간단한 벡터값의 역전파 예시 코드이다. 일반적으로 업데이트 값이 스칼라인 경우는 Q.backward()로도 gradient가 업데이트 되지만 위와 같이 Q가 벡터 값으로 나오는 경우, Q.backward(gradient = external_grad)라고 external_grad를 명시해주어야 한다. 왜 그럴까?? 여러 참고자료와 구글링을 통해 알아낸 점은..

[Pytorch] Parameter : 매개변수 / Buffer

1. Parameter란 정의로는 매개변수, 머신러닝에서는 모델이 사용할 수 있는 매개변수를 모델 내부에서 저장하는 것을 말한다. 일반적인 변수 지정 방식으로는 모델에서 반복적으로 로드할 수 없기 때문에 torch.nn.parameter.Parameter를 사용하여 torch 내부에 저장한다. 2. 모델 내부에서 Parameter 사용 import torch from torch import nn from torch.nn.parameter import Parameter class Model_Param(nn.Module): def __init__(self, in_features, out_features): super().__init__() self.W = Parameter(torch.ones((out_fea..

[Pytorch] 파이토치 연산자 : 사칙연산, 인덱싱

Pytorch는 벡터, 행렬 등의 다양한 연산을 지원한다. 기본적인 사칙연산부터 선형대수, 나아가서는 머신러닝에 중요한 모듈을 구성할 수 있는 메서드를 포함한다. 1. torch 사칙 연산 1) torch.add() torch.add()는 '+'로 대체 가능하며 벡터 혹은 행렬의 해당 위치의 값을 더해준다. 모양이 같은 벡터나 행렬이 아니어도 각 위치에 대해 값이 연산된다. import torch A, B = torch.tensor([2]), torch.tensor([3]) torch.add(A,B) >> tensor([5]) tensor([2])와 tensor([3]) 길이가 1인 1차원 텐서이므로 연산 결과는 tensor([5])의 1차원 텐서로 나온다. torch.add(A,7) >> tensor(..

[ML/DL] SOTA가 뭔가요

SOTA는 State Of The Art의 약자로 현재 최고 수준의 결과를 말한다. 캐글 같은 콘테스트 사이트나 기술 관련 글을 보다 보면 나오는 단어이다. 모델 구축 시에 완전히 처음부터 학습하게 되면 시간이나 CPU/GPU 자원 등의 리소스 소모가 커서 개인으로써는 접근하기가 어렵기 때문에 pre-trained 모델을 많이 사용하게 된다. 이때 SOTA는 'pre-trained 모델 중 현재 최고 수준의 결과를 가진 모델'이 된다. https://brunch.co.kr/@kakao-it/64 [카카오AI리포트]연구자들이 열광하는 ICML,NIPS 학회 논문 메타 분석에서 나타나는 연구 흐름 | 저희는 왜 ‘카카오 AI 리포트'를 내고 있을까요. 이번 호는 이 같은 질문에 대해 또 다른 답을 찾아가는 ..

[RNN] Recurrent Neural Network : 순환신경망

MLP와 같은 방식은 input 데이터로 위치나 순서와 상관없이 형성된 데이터를 사용하여 모델을 학습한다. 반면에 CNN은 regional feature를 학습하기 때문에 일정 크기의 kernel을 활용하여 Convolution 연산으로 학습을 한다. 하지만 소리, 문자열, 주가 등의 시퀀스 데이터는 독립적인 데이터라(i.i.d)는 머신러닝의 가정을 위배하는 경우가 많기 때문에 학습이 원활하게 이루어지지 않는 경우가 있다. local 적인 측면에 집중한 CNN 또한 이러한 시퀀스 데이터에 적용하기가 쉽지 않다. 이러한 문제를 해결하기 위해 순환신경망(RNN : Recurrent Neural Network)이라는 개념이 나오게 되었다. 1. 시퀀스 데이터 (Sequence data) : 시퀀스 데이터는 데..

[CNN] Convolutional Neural Network : 합성곱 신경망

1. 다층신경망(MLP : Multi Layer Perceptron) 다층신경망(MLP : Multi Layer Perceptron)은 각 뉴런들이 선형모델과 활성함수로 모두 연결된(fully-connected) 구조 MLP는 i에 의존적이며, i가 변화할 때마다 가중치도 변화하게 된다. 이는 가중치 행렬 W가 모든 i에 대한 가중치를 행으로 합쳐둔 행렬이기 때문이다. 이것과는 다르게 모든 i에 대해 일정한 크기의 커널(kernel)을 입력벡터 상에 일정한 간격을 두고 움직이며 연산을 하는 합성곱 신경망(CNN : Convolutional Neural Network)가 등장했다. 2. 합성곱 신경망(CNN : Convolutional Neural Network) CNN은 특히 이미지 처리 분야에서 발전하..

[Back propagation] 역전파

신경망은 선형모델(linear model)과 활성함수(activation function)을 합성한 함수로 구성된다. 이렇게 구성된 신경망을 겹겹이 쌓으면 다층 퍼셉트론(Multi-Layer Perceptron:MLP)이 되며, 머신러닝 모델의 기본이 된다. 위의 MLP 예시 이미지에 나타난 것과 같이 화살표 방향으로 데이터가 흐르며 계산이 되고 이를 순전파(Forward Propagation)이라고 한다. 순전파는 input 데이터가 output 데이터로 변환되는 과정을 말하며, 이것만 가지고는 모델이 학습이 되지 않기 때문에 모델이 가진 선형방정식을 업데이트해야한다. 이때 업데이트가 되는 방향은 순전파 방향의 반대 방향이 되고 이를 역전파(Back propagation)이라고 한다. 1. 역전파 : ..

[Gradient Descent & Gradient ascent] 경사상승법 & 경사하강법

1. 미분이란? : 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 : 함수의 특정 위치에서의 변화량, 기울기 주어진 점 (x,f(x))에서 미분값을 알면 어느 방향으로 움직여야 함수값이 증가/감소하는지 알수 있다. 미분값 < 0 일때, : x + f`(x) 0 일때, : x - f`(x) < x < x + f`(x) 미분값을 더하면 경사상승법(gradient ascent) : 함수의 극대값의 위치를 구할 때 사용 미분값을 빼면면 경사하강법(gradient descent) : 함수의 극소값의 위치를 구할 때 사용 2. 편미분 변수가 벡터인 경우 다변수 함수가 된다. 각각의 변수에 따라 기울기가 발생하기 때문에 함수의 최적화를 위해서는 각각의 변수마다 미분값을..

지도학습 Supervised Learning / 비지도학습 Unsupervised Learning / 강화학습 Reinforcement Learning

머신러닝의 목표는 주로 예측이며, 다양한 예측을 가능하게 하기 위해 데이터를 활용하여 학습시키는 방법이라고 할수 있습니다. 데이터를 어떻게 학습시키는지 또, 사람의 개입이 이루어지는지에 따라 아래 세 가지로 나누어집니다. 1. Supervised Learning : 지도학습 2. Unsupervised Learning : 비지도학습 3. Reinforcement Learning : 강화학습 크게 나누면 지도/비지도학습 두 종류이지만 그 둘에 속하지 않는 특이한 학습방법으로 강화학습까지 포함하여 세 가지 방법론에 대해서 정리해보도록 하겠습니다. 1. Supervised Learning : 지도학습 지도학습은 정답(label)이 있는 데이터를 사용하여 학습하는 방법입니다. label이 있기 때문에 실제값과 ..

Neural Network basic - NN, Gradient Descent, Error Back Propagation은 무엇일까?

1. Neural Network Neural Network(이라 NN)은 인간 뇌의 신경망과 유사하게 설계하여 보다 복잡한 연산을 가능하게 한 연산 네트워크 구조입니다. Input 값으로는 [x1, x2, ..., xn]의 벡터이며, 원 안의 F(unction)을 통해 연산 작업을 마친 후에 output 값으로 y를 내보내는 구조입니다. 이 때 Input 값으로 들어가는 [x1, x2, ..., xn] 벡터의 요소에 대응하는 w1, w2, ..., wn의 가중치와 Input 값 벡터와 Weighted Summation 연산을 하며 그 후에 Activation Function을 거쳐 최종 output y가 됩니다. * Weighted Summation : s = x1w1 + x2w2 + ... + xnwn..

728x90
반응형