728x90 Drawing (AI)112 딥러닝 직접 구현하기 - (배치 정규화) 배치 정규화 이전에는 가중치의 초깃값을 적절히 설정하면 각 층의 활성화 값 분포가 적당히 퍼지면서 원활하게 학습이 진행됨을 확인했다. 이번에는 각층이 활성화를 적당히 퍼뜨리도록 강제하는 방법을 이용해보려한다. 이런 아이디어에서 시작된 방법을 배치 정규화(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. Udemy - 딥러닝의 모든 것(볼츠만 머신 구축하기) 영화 추천 시스템 볼츠만 머신을 이용하여 Movie Lens 데이터를 이용하여 영화를 추천하는 모델을 구축해보도록 하자. Movie Lens dataset은 주로 100K 데이터가 학습, 개발으로 쓰이고 20M데이터가 연구 벤치마크로 쓰인다고 한다. 100K데이터를 주로 다뤄보려한다. 위와 같이 유저에 따른 영화에 매긴 평점이 데이터로 존재한다. Movie Lens EDA 자료가 Kaggle에 있어 참고하보고자 한다. 처음 딥러닝 공부를 할때는 데이터 자체보다는 기술에 관심이 많았으나 다양한 과제와 대회에 참여하다보니 데이터의 특징을 파악하고 정제하고 다루는 것이 매우 중요함을 알게되어 데이터를 더 살펴보게 되는 습관이 생겼다. 참고: https://www.kaggle.com/code/salmaneunu.. 2024. 1. 8. 강화학습 - Intro Introduction 강화학습은 근본적으로 Trial and error learning을 기반으로 한다. 대표적으로 Skinner's experiment처럼 원하는 행동을 하면 보상을 주고 다른 행동을 하면 처벌을 하여 학습을 시키는 것이다. 강화학습(Reinforcement Learning)은 Machine Learning의 한 분야로, 어떤 환경에서 에이전트가 최적의 결정 또는 행동 순서를 학습하는 과정을 다룬다. 강화학습의 핵심은 에이전트가 시행착오를 통해 학습하며, 자신의 행동이 어떤 결과를 가져오는지를 이해하고, 최종적으로는 목표를 달성하거나 최대의 보상을 얻기 위해 최적의 행동 전략을 개발하는 것이다. 강화학습의 주요 구성 요소는 아래와 같다. 에이전트(Agent): 학습하는 주체로, 환경에.. 2024. 1. 7. 딥러닝 직접 구현하기 - (오차역전파법) 오차역전파법 오차역전파법(Backpropagation)은 신경망을 훈련시키기 위한 핵심적인 알고리즘 중 하나이다. 이 방법은 신경망에서 발생하는 오차를 각 뉴런의 가중치에 역으로 전파함으로써 가중치를 조정하는 과정을 포함한다. 오차역전파법은 주로 다음의 단계들로 구성된다. 전방향 전파(Forward Propagation): 입력 데이터가 신경망을 통해 앞으로 전파되며, 각 층의 뉴런은 활성화 함수를 통해 출력값을 생성한다. 이 과정은 입력층에서 시작해 출력층에서 끝난다. 손실 함수 계산: 신경망의 출력과 실제 목표값 사이의 차이를 측정하는 손실 함수(loss function)를 계산한다. 이 손실은 신경망이 얼마나 잘못된 예측을 하고 있는지를 나타내는 지표이다. 역방향 전파(Backward Propaga.. 2024. 1. 7. Udemy - 딥러닝의 모든 것(볼츠만 머신) - (2) 대조발산 볼츠만 머신의 학습 방법 중 하나인 대조발산(Contrastive Divergence, CD)은 볼츠만 머신을 효율적으로 학습시키는 방법 중 하나이다. 볼츠만 머신은 에너지 기반 모델로, 시스템의 에너지를 최소화하는 방향으로 학습을 진행한다. 대조발산은 이러한 볼츠만 머신의 학습 과정을 단순화하고 가속화하기 위해 고안된 방법이다. 기본 원리를 보자면 대조발산은 데이터의 분포와 모델의 분포 사이의 차이를 최소화하는 방향으로 모델의 매개변수를 조정한다. 이 과정은 두 단계로 이루어진다. Positive phase: 실제 훈련 데이터를 사용하여 네트워크의 은닉 노드를 활성화시키고, 이를 기반으로 네트워크의 에너지를 계산한다. Negative phase: 네트워크가 생성한 샘플(모델 분포에 의해 생성된.. 2024. 1. 7. 이전 1 2 3 4 5 6 7 8 ··· 13 다음 728x90