딥러닝 모델: 파이토치(71)
-
Pytorch로 시작하는 딥러닝 입문(06-10. 기울기 소실과 폭주, 기울기 초기화: Vanishing Gradient, Exploding Gradient, Weight Initialization)
깊은 인공신경망을 학습하다보면 역전파 과정에서 입력층으로 갈수록 기울기가 점차적으로 작아지는 현상이 발생할 수 있다. 입력층에 가까운 층들에서 가중치들이 제대로 업데이트 되지 않으면 최적의 모델을 찾을 수 없다. 이를 기울기 소실(Gradient Vanishing)이라고 한다. 반대의 경우로, 기울기가 점차 커지면서 가중치들이 비정상적으로 큰 값이 되어 발산되기도 한다. 이를 기울기 폭주(Gradient Exploding)이라고 하며, 뒤에서 배울 순환신경망(Recurrent Neural Network, RNN)에서 발생할 수 있다. 여기서는 기울기 소실 또는 기울기 폭주를 막는 방법들에 대해 다룬다. ♣ ReLU와 ReLU의 변형들시그모이드 함수를 사용하면 입력의 절대값이 클 경우, 시그모이드 ..
2024.03.17 -
Pytorch로 시작하는 딥러닝 입문(06-09. 과적합을 막은 방법들/augmentation, regularization, Dropout, Early stopping)
모델이 과적합되면 훈련 데이터에 대한 정확도는 높을지라도 새로운 데이터에 대해서는 제대로 동작하지 않는다. 이번에는 모델의 과적합을 막을 수 있는 여러 가지 방법에 대해서 논의한다. ♣ 데이터의 양 늘리기데이터의 양이 적을 경우, 모델은 헤당 데이터의 특정 패턴이나 노이즈까지 쉽게 암기하게 되므로 과적합 현상이 발생할 확률이 늘어난다. 데이터의 양을 늘릴수록 모델은 데이터의 일반적인 패턴을 학습하여 과적합을 방지할 수 있다. 데이터의 양이 적은 경우, 의도적으로 기존 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리기도 하는데, 이를 데이터 증식, 또는 증강(Data Augmentation)이라고 한다. 이미지의 경우에 데이터 증식이 많이 사용되는데 이미지를 돌리거나 노이즈를 추가하고, 일부분을 ..
2024.03.16 -
Pytorch로 시작하는 딥러닝 입문(06-08. 다층 퍼셉트론으로 MNIST 분류하기)
소프트맥스 회귀를 사용한 다층 퍼셉트론을 구현하고 딥러닝을 통해 MNIST 데이터를 분류해보자♣ 데이터 로드 *sklearn.datasets는 대표적인 sample datasets들을 제공하는 모듈이다. https://teddylee777.github.io/scikit-learn/Sklearn-dataset-%EB%AA%A8%EB%93%88%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%98%EC%97%AC-dataset%EB%A1%9C%EB%94%A9%ED%95%98%EA%B8%B0/ sklearn.datasets 모듈을 활용하여 샘플데이터 로딩하기sklearn.datasets 모듈을 활용하여 샘플데이터 로딩하는 방법에 대하여 알아보겠습니다.teddylee777.github.io..
2024.03.16 -
Pytorch로 시작하는 딥러닝 입문(06-07. 다층 퍼셉트론으로 손글씨 분류하기)
♣ 숫자 필기 데이터 숫자 필기 데이터는 0부터 9까지의 숫자를 손으로 쓴 이미지 데이터로, load_digits( ) 명령으로 로드할 수 있다. 각 이미지는 0부터 15까지의 명암을 가지는 8×8=64 픽셀 해상도의 흑백 이미지이다. 첫 번째 샘플을 출력해보자. .images[인덱스]를 사용하면 해당 인덱스의 이미지를 행렬로써 출력할 수 있다. 첫 번째 샘플이 8 × 8 행렬로 출력된 것을 볼 수 있다. 0을 흰색 도화지, 0보다 큰 숫자들을 검은색 점이라고 상상하면 숫자 0의 실루엣처럼 보인다. 실제로 레이블도 숫자 0인지 첫 번째 샘플의 레이블을 확인해보자.첫 번째 샘플의 레이블은 0인 것을 확인할 수 있다. 이런 샘플이 몇 개 있는지 확인해보자. 전체 샘플의 수는 1,797개이다. 전체 샘플..
2024.03.14 -
Pytorch로 시작하는 딥러닝 입문(06-06. 비선형 활성화 함수: Activation function)
비선형 활성화 함수는 입력을 받아 수학적 변환을 수행하고 출력을 생성하는 함수이다. 앞서 배운 시그모이드 함수, 소프트맥스 함수가 대표적인 활성화 함수 중 하나이다. 여기서는 인공신경망의 은닉층에서 왜 활성화 함수로 시그모이드 함수를 사용하는 것을 지양해야 하는지를 알아보고, 은닉층에서 주로 사용되는 함수인 ReLU 함수와 그 외의 다른 활성화 함수들을 소개한다. ♣ 활성화 함수의 특징: 비선형 함수(Nonlinear function)활성화 함수의 특징은 선형 함수가 아닌 비선형 함수여야 한다는 점이다. f(x) = Wx+b 와 같은 함수에서 W와 b는 상수이다. 이 식은 그래프를 그리면 직선이 그려진다. 이와 다르게 비선형 함수는 직선 1개로는 그릴 수 없는 함수를 의미한다. 인공신경망의 능력을 높이..
2024.03.12 -
Pytorch로 시작하는 딥러닝 입문(06-05. XOR: 다중 퍼셉트론 구현하기)
♣ 파이토치로 다중 퍼셉트론 구현하기 입력과 출력 정의하기 다층 퍼셉트론 설계하기 다층 퍼셉트론을 설계하는데, 아래는 입력층, 은닉층1, 은닉층2, 은닉층3, 출력층을 가지는 인공신경망이다. 위 인공신경망을 그림으로 표현하면 아래와 같다. 비용함수와 옵티마이저 선언하기 nn.BCELoss( )는 이진 분류에서 사용하는 크로스엔트로피 함수이다. 학습을 진행하면서 비용이 최소화되는 방향으로 가중치와 편향이 업데이트된다. ♣ 학습된 다층 퍼셉트론의 예측값 확인하기 모델이 XOR 문제를 풀 수 있는지 테스트해보자. 실제값은 0, 1, 1, 0이며 예측값은 0, 1, 1, 0으로 문제를 해결할 수 있다는 것을 보여준다!
2024.03.11