본문 바로가기
728x90

전체 글423

Udemy - 딥러닝의 모든 것(AutoEncoder구축하기) 데이터 이번에도 볼츠만 머신 구축할 때 이용했던 Movie Lens 데이터를 이용해볼 것이다. 이전에도 봤지만 아래와 같은 형식으로 구성된 데이터이다. Autoencoder 구축 import numpy as np import pandas as pd import torch import torch.nn as nn import torch.nn.parallel import torch.optim as optim import torch.utils.data from torch.autograd import Variable training_set = pd.read_csv('ml-100k/u1.base', delimiter = '\t') training_set = np.array(training_set, dtype = '.. 2024. 1. 24.
딥러닝 직접 구현하기 - (CNN) 구조 CNN(Convolutional Neural Network)은 이전에도 블로그에서 자주 다뤘으니 기본 개념은 간단히 다루고 넘어가고 구현하는 부분에 집중하도록 한다. CNN은 컴퓨터 비전과 이미지 인식에서 널리 사용되는 심층 학습 모델이다. Fully Connected Layer와는 다르게 전체 데이터를 섞어버리지 않고 각 부분의 특징을 보존하기 때문에 CNN은 이미지에서 패턴을 인식하고 이를 분류하는 데 탁월한 능력을 지닌다. CNN에서 쓰이는 개념들을 간단히 살펴보자. 커널 (Kernel) / 필터 (Filter) 커널 또는 필터로 불리는 행렬은 이미지의 특정 특성을 추출하는 데 사용되는 작은 행렬이다. 커널은 이미지의 윈도우와 요소별로 곱해지며, 그 결과를 합하여 피처맵의 한 요소를 형성한다... 2024. 1. 19.
강화학습 - (Markov Reward Process) Markov Property 마르코프 속성(Markov Property)은 확률론과 통계학, 특히 확률 과정에서 중요한 개념이다. 이는 강화학습의 핵심 문제인 Markov Decision Process를 정의하고 해결하는 것에도 핵심적으로 쓰인다. 이 속성은 미래의 상태가 오직 현재의 상태에만 의존하며 과거의 상태에는 의존하지 않는다는 것을 나타낸다. 해당 특성을 수식화하면 아래와 같이 나타낼 수 있다. 마르코프 속성은 복잡한 확률 과정을 단순화한다. 과거의 모든 정보를 고려할 필요 없이, 현재 상태만을 이용하여 미래를 예측할 수 있다. 또한 마르코프 속성은 계산상의 복잡성을 줄여준다. 과거의 모든 상태를 추적하고 고려하는 대신, 현재 상태만을 고려함으로써 더 효율적인 계산이 가능하다. 마르코프 속성은 .. 2024. 1. 16.
딥러닝 직접 구현하기 - (Training process) Overfitting 오버피팅은 주로 매개변수가 많아서 표현력이 높은 모델이고 훈련 데이터가 적을 때 발생한다. 데이터에 맞춰서 학습하는 능력이 뛰어난데 맞춰갈 데이터의 수가 적으니 그에 과적합해진다고 생각하면 당연한 조건이다. 이러한 조건에 충족한 상황을 만들어서 오버피팅을 발생시키고 결과를 살펴보자. 60,000개인 MNIST데이터셋중 300개만 사용하고 7층 네트워크를 사용하여 복잡도를 높혀보자. 각 층은 100개의 뉴런, ReLU 활성화 함수를 사용하였다. from dataset.mnist import load_mnist (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True) # 오버피팅을 재현하기 위해 학습 데이터 수를 줄임 x_tr.. 2024. 1. 15.
Google Solution Challenge 2024 - STT Intro 구글 솔루션 챌린지를 위해 진행하는 이번 프로젝트는 청각장애인을 위한 혁신적인 양방향 통역기를 개발하는 것을 목표로 하고 있다. 이 어플리케이션은 카메라를 통해 수어를 인식하고, 이를 Google의 Text-to-Speech(TTS)를 통해 텍스트로 변환하여 일반인에게 음성으로 전달한다. 또한, 일반인의 말을 Google의 Speech-to-Text(STT) 기술을 이용하여 텍스트로 변환해서 청각장애인에게 보여줌으로써, 소통의 장벽을 없애는 데 중점을 두고 있다. 이 기술은 청각장애인이 일상 생활에서 더욱 원활하게 소통할 수 있게 하며, 모두가 접근 가능한 커뮤니케이션 환경을 조성하는 데 기여할 것으로 기대된다. STT 음성 인식 기술, 흔히 STT(Speech-to-Text)라고 불리는 이 .. 2024. 1. 14.
강화학습 - (UCB) Upper Confidence Bound UCB는 random하게 선정하는 것의 불확실성을 해소하기 위해 이용되는 방법이다. 우연히 나쁜 표본이 선택되어 potential이 있는 slot machine을 배제하고 다른 slot machine을 선택하게 되는 일을 방지하기 위한 알고리즘이다. 자세히 알아보자면 아래와 같다. UCB 알고리즘은 보상 값의 잠재적 가능성을 상한 신뢰 경계 U_t(a)로 측정하여, 실제 값 q_*(a)가 (Q_t(a) + U_t(a)) 이하일 확률이 높게 된다. 여기서 상한 경계 U_t(a)는 (N_t(a)), 즉 시간 t 이전에 액션 a가 선택된 횟수에 대한 함수이다. 액션 a가 더 자주 선택될수록 U_t(a) 는 더 작아진다. UCB 알고리즘에서는 항상 상한 신뢰 경계를 최대.. 2024. 1. 13.
Udemy - 딥러닝의 모든 것(AutoEncoders) - (2) Overcomplete Hidden Layers 기존의 AutoEncoder들은 모두 hidden layer로 넘어갈때 정보를 압축하여 노드수가 줄었는데 아래와 같이 오히려 개수가 늘어나는 것도 가능은하다. 데이터가 무거워져서 왜 그런 짓을 하지? 싶을 수 있지만 feature extraction의 목적으로 이용할 때는 다양한 feature를 뽑아낼 수 있어서 효용이 있을 수 있다. 그러나 input, output layer들 보다 hidden layer의 노드수가 많으면 input과 output의 값이 같아지는 것이 목표이므로 hidden node에 input 노드 수만큼의 node들에 값을 그대로 넣어서 output까지 넘겨버리고 남는 노드는 그냥 버리는 식으로 학습을 해버릴 수 있다. 그렇게 진행되.. 2024. 1. 11.
딥러닝 직접 구현하기 - (배치 정규화) 배치 정규화 이전에는 가중치의 초깃값을 적절히 설정하면 각 층의 활성화 값 분포가 적당히 퍼지면서 원활하게 학습이 진행됨을 확인했다. 이번에는 각층이 활성화를 적당히 퍼뜨리도록 강제하는 방법을 이용해보려한다. 이런 아이디어에서 시작된 방법을 배치 정규화(Batch Normalization)이라한다. 배치 정규화 알고리즘은 2015년 제안된 방법으로 나온지 얼마 안 된 기법임에도 현재 굉장히 많이 사용된다. 배치 정규화는 다음과 같은 장점이 존재한다. 1. 학습 속도 개선 2. 초깃값 선택에 크게 의존하지 않음 3. 오버피팅을 억제 위와 같이 Batch Normalization을 이용한다. 배치 정규화는 이름 그대로 학습 시 미니배치를 단위로 정규화한다. 정확히는 데이터 분포의 평균이 0, 분산이 1이 되.. 2024. 1. 11.
Udemy - 딥러닝의 모든 것(AutoEncoders) - (1) AutoEncoders 우선 AutoEncoder는 아래와 같이 생겼다. 다시 유향 신경망 모델로 돌아왔음을 알 수 있다. 인코딩후에 디코딩을 하고 값을 서로 비교하는 과정을 통해서 학습을 진행하여 비지도 학습중 하나의 형태인 Self-supervised라고 볼 수 있다. 학습 과정에서 Hidden Nodes들에 학습되어 나타난 feature들을 추합하여 feature 추출에도 이용될 수 있고 강력한 추천 모델로도 이용될 수 있다. 우선 아래의 간소화된 모델을 통해서 살펴보자. 유저가 보고 평가한 영화들에 대해서 좋게 평가한것은 1, 나쁘게 평가한 것은 0으로 기록되어있고 인코더를 통해서 암호화가 될 것이다. 네개의 노드를 두개의 노드로 압축하여 공간 효율도 챙길 수 있게 된다. 어떻게 이렇게 압축이 가.. 2024. 1. 10.
딥러닝 직접 구현하기 - (가중치 초기값) 가중치의 초기값 신경망 학습에서 가중치의 초기값은 매우 중요하다. 가중치의 초기값 설정이 신경망 학습의 성패를 가르는 일이 실제로 자주 있다. 오버피팅을 억제하여 범용 성능을 높이는 테크닉인 가중치 감소(weight decay) 기법을 살펴볼 건데 이는 말 그대로 가중치 매개변수의 값이 작아지도록 학습하여 오버피팅을 방지하는 것이다. 가중치를 작게 만들려면 초깃값도 최대한 작게 만드는 것이 좋다. 따라서 이전에 사용할 때는 단순히 0.01*np.random.randn(10,100)과 같이 정규분포에서 생성된 값을 0.01배로 만든 작은 값을 사용했다. 이때 가중치의 초기값을 작게 하기 위해 0으로 설정하면 오차역전파 과정에서 모든 가중치의 값이 똑같이 전달되기 때문에 학습이 제대로 이루어지지 않는다. 따.. 2024. 1. 10.
강화학습 - (Multi-armed Bandits) K-armed Bandits 아래의 그림과 같이 여러개의 손으로 Slot machine을 다루는 컨셉에서 시작한 기법이다. 여러개의 Slot machine이 있다는 것은 각기 다른 확률을 갖고 있는 event중 선택을 하여 최선의 결과를 이끌어내야 한다는 것을 의미한다. 위와 같이 5가지 경우가 있다면 D5를 선택하는 것이 좋은 선택이 될 것이다. 이때 좋은 선택을 해내는 가장 간단한 방법은 각각을 몇번씩 선택해보고 그 결과치를 평균을 내어 그 평균값이 최대인 결과를 계속해서 선택하면 될 것이다. 그러나 그런 방법은 안정도는 높은 수 있지만 최선의 방법을 찾기에는 어려움이 있을 수 있다. 따라서 아직 잘 알려지지 않은 팔을 당겨서 더 높은 보상을 주는 팔을 찾는 과정인 exploration과 현재까지 알.. 2024. 1. 9.
딥러닝 직접 구현하기 - (Optimizer) SGD 확률적 경사 하강법(stochastic gradient descent)의 줄임말인 SGD는 현재 상태에서 학습률과 미분값에 비례한 값을 빼서 갱신하는 방식을 이용한다. 위 식을 기반으로 파이썬 클래스로 구현하면 아래와 같다. 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] lr : 학습률, learning rate. 인스턴스 변수로 유지 update(params, grads) : SGD 과정에서 반복해서 호출됨 params : 딕셔너리 변수. 가중치 매개변수 저장됨. 예시 params.. 2024. 1. 8.
728x90