728x90

Deep Learning 17

[Deep Learning] 모델 설계하기

기본 예제로 모델 설계 과정 설명 폐암 수술 환자의 생존율 예측하기 # 딥러닝을 구동하는 데 필요한 케라스 함수 호출 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 필요한 라이브러리 불러옴 import numpy as np import tensorflow as tf import pandas as pd # 실행될 때마다 같은 결과를 출력하기 위해 설정하는 부분 np.random.seed(3) tf.random.set_seed(3) # 준비된 수술 환자 데이터를 불러옴 Data_set = np.loadtxt('/content/drive/MyDrive/colab/deep_learning_basi..

Deep Learning 2022.12.30

[Deep Learning] 프레임워크 확장 코드 구현

이전 deep learning 클래스 코드 구현과 이어지는 내용이므로, 이전 글 먼저 확인하는 것이 좋습니다. https://heejins.tistory.com/36 float: # 각 행(관찰에 해당)에 softmax 함수 적용 softmax_preds = softmax(self.prediction, axis = 1) # 손실값이 불안정해지는 것을 막기 위해 softmax 함수의 출력값 범위를 제한 self.softmax_preds = np.clip(softmax_preds, self.eps, 1 - self.eps) # 실제 손실값 계산 수행 softmax_cross_entropy_loss = ( -1.0 * self.target * np.log(self.softmax_preds) - (1.0 - s..

Deep Learning 2022.11.24

[Deep Learning] 딥러닝 클래스 코드 구현(연산, layer, neuralnetwork, 배치학습, optimizer)

import numpy as np from numpy import ndarray from typing import * def assert_same_shape(array: ndarray, array_grad: ndarray): assert array.shape == array_grad.shape, \ f""" 두 ndarray의 모양이 같아야 하는데, 첫 번째 ndarray의 모양은 {tuple(array_grad.shape)}이고, 두 번째 ndarray의 모양은 {typle(array.shape)}이다. """ return None - 신경망 구성 요소: 연산 Operation 클래스 class Operation(object): """ 신경망 모델의 연산 역할을 하는 기반 클래스 """ def __in..

Deep Learning 2022.11.23

[Deep Learning] 오차 수정하기: 경사하강법, 편미분 코드 구현

기울기 a를 너무 크게 잡거나 너무 작게 잡으면 오차가 커짐. 오차와 기울기 사이에는 상관관계가 있음. 오차가 가장 작은 점은 기울기 a가 m에 위치해 있을때 이므로, m으로 이동시키는 과정이 필요함. 미분 기울기를 이용한 경사하강법(gradient descent)를 통해 오차를 비교하여 가장 작은 방향으로 이동시켜야함. 최솟값 m에서의 순간 기울기는 x축과 평행한 선, 즉 기울기가 0임. - '미분값이 0인 지점'을 찾아 오차를 가장 적게 만들어야 함. a₁에서 미분을 구한다. 구해진 기울기의 반대 방향(기울기가 +면 음의 방향, -면 양의 방향)으로 얼마간 이동시킨 a₂에서 미분을 구한다. 위에서 구한 미분 값이 0이 아니면 위 과정을 반복한다. 경사 하강법은 이렇게 반복적으로 기울기 a를 변화시켜서..

Deep Learning 2022.11.22

[Deep Learning] learning rate decay, learning rate scheduler

Learning Rate Decay 기존의 learning rate가 높은 경우 loss 값을 빠르게 내릴 수는 있지만, 오차가 0인 지점을 벗어날 수 있고, 낮은 경우는 최적의 학습이 가능하지만 너무 오랜 시간이 걸리게 됩니다. 따라서 정적인 learning rate로 학습을 하는 것이 아닌, epoch마다 동적으로 learning rate를 변화시켜 최적의 학습을 하도록 합니다. tf.keras.optimizers.schedules.CosineDecay tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate, decay_steps, alpha=0.0, name=None ) initial_learning_rate: 초기 lr decay_ste..

[Deep Learning]퍼셉트론(Perceptron)

신경망을 이루는 가장 중요한 기본 단위: 퍼셉트론(perceptron) 퍼셉트론: 입력 값과 활성화 함수를 사용해 출력 값을 다음으로 넘기는 가장 작은 신경망 단위 가중치, 가중합 바이어스, 활성화 함수 y = ωx + b(ω는 가중치, b는 바이어스) 가중합(weighted sum): 입력값(x)과 가중치(ω)의 곲을 모두 더한 다음 거기에 바이어스(b)를 더한 값 활성화함수(activation function): 가중합의 결과를 놓고 1 또는 0을 판단하는 함수 XOR 문제(exclusive XOR) AND: x₁와 x₂ 둘 다 1일 때 결과값이 1로 출력 OR: 둘 중 하나라도 1이면 1로 출력 XOR: 둘 중 하나만 1일 때 1로 출력 다층 퍼셉트론 XOR 문제를 해결하기 위해서는 두 개의 퍼셉트..

Deep Learning 2022.11.16

[Deep Learning]overfitting, drop out, hyper-parameter 최적화

바른 학습을 위해 기계 학습에서는 오버피팅이 문제가 되는 일이 많음. 오버피팅이란 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응되지 못하는 상태를 말함. 오버피팅은 주로 다음의 두 경우에 일어남. 1. 매개변수가 많고 표현력이 높은 모델 2. 훈련 데이터가 적음 # 오버피팅 결과 import os import sys sys.path.append(os.pardir) import numpy as np import matplotlib.pyplot as plt from mnist import load_mnist from common_multi_layer_net import MultiLayerNet from common_optimizer import SGD (x_train, t_tra..

Deep Learning 2022.11.13

[Deep Learning]배치 정규화(Batch Normalization)

배치 정규화 배치 정규화 알고리즘 학습을 빨리 진행할 수 있다.(학습 속도 개선) 초깃값에 크게 의존하지 않는다.(골치 아픈 초깃값 선택 장애여 안녕!) 오버피팅을 억제한다.(드론아웃 등의 필요성 감소) [배치 정규화를 사용한 신경망의 예] 배치 정규화는 학습 시 미니배치를 단위로 정규화함. 구체적으로는 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화함. [배치 정규화 수식] 배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대와 이동 변환을 수행함. 수식으로는 다음과 같음. 이 식에서 γ가 확대를, β가 이동을 담당함. 두 값은 처음에는 γ=1, β=0부터 시작하고, 학습하면서 적합한 값으로 조정해감. 이것이 배치 정규화의 알고리즘이며, 신경망에서 순전파 때 적용됨. 계산 그래프는 아래와 같음...

Deep Learning 2022.11.13
728x90