본문 바로가기

딥러닝25

9. CNN Architectures 1. AlexNet (2012)ImageNet classification task 잘 수행, First CNN-based winner1) CONV1227 x 227 x 3 inputfilter: 96개의 11x11 필터(stride:4)(227-11)/4+1=55 -> 55 x 55 x 96파라미터 갯수 : (11*11*3)*96=35K2) MAX POOL1filter: 3x3(stride:2)(55-3)/2+1=27->27 x 27x 96파라미터 갯수: 0 - 비선형함수로 ReLU 사용- Regularization(data augmentation, dropout)- optimization으로 SGD momentum 0.9- Learning rate 1e-2- ConvNet에서 2개 row로 나누는데 (.. 2024. 5. 5.
9장. 심층신경망 1. 심층신경망선형 회귀 또는 로지스틱 회귀는 비선형 문제를 풀 수 없음비선형 데이터를 다루기 위해서 심층신경망이 필요함.심층신경망은 세상에 존재하는 그 어떤 형태의 함수도 근사계산할 수 있음. 심층신경망: 선형계층을 쌓고, 그 사이에 비선형 활성함수를 끼워넣음 2. 역전파(back-propagation)손실함수에 대해 미분을 하여 최적의 가중치 파라미터를 찾아야 하는데,체인룰을 활용하여 효율적인 미분 계산 가능 3. 그래디언트 소실문제(gradient vanishing)입력에 가까운 계층의 가중치 파라미터가 잘 업데이트 되지 않는 문제활성함수 기울기가 1보다 작은데, 작은 그래디언트 값이 계속 곱해져서 생기는 문제 4. ReLU / leaky ReLU그랜디언트 소실 문제를 보완하기 위한 활성함수ReLU.. 2024. 5. 2.
8장. 로지스틱 회귀 선형회귀는 연속형 변수를 예측하지만 로지스틱 회귀는 주로 이진분류를 위해 사용됨 (0또는 1)로지스틱 회귀는 데이터가 어떤 범주에 속할 확률을 0~1 사이 값으로 예측하고, 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류 1. 활성함수선형계층 함수 직후에 -> 활성함수를 넣어주어 전체 모델 구성 대표적인 활성함수: 시그모이드 함수, 탄에이치함수 시그모이드 함수: 0~1탄에이치: -1~1 2. 손실함수 이진분류문제를 푸는 경우 -> 이진 크로스엔트로피(BCE) 손실함수 3. 로지스틱 회귀의 수식 이때, 확률 값의 표현이라고도 볼 수 있다. 4. 실습import pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltfrom sklear.. 2024. 5. 1.
8. Deep Learning Software 1. CPU vs GPU- GPU는 NVIDIA- GPU는 Matrix Multiplication에 강함!- CPU는 GPU보다 훨씬 적은 수의 코어가 있지만, CPU코어가 더 빠름- GPU는 개별적인 RAM을 갖고 있음.- 실제 모델과 가중치는 GPU RAM에 저장되어 있고, train data는 컴퓨터 저장장치에 저장되어 있기 때문에, data를 가져오는데에 시간이 많이 걸린다 -> 해결을 위해 데이터 작으면 RAM에 넣어놓고, HDD보다는 SDD를 사용하고, CPU 다중 스레드를 이용해서 데이터를 RAM에 미리 pre-fetching Programming GPU -> CUDA, OpenCL, UdacitycuDNN을 사용한 CUDA가 매우 강력함 2. Deep Learning Frameworks(T.. 2024. 4. 29.
7. Training Neural Networks 2 1. Optimization : Adam이 성능이 가장 좋고 가장 많이 쓰이는 알고리즘!training 데이터의 loss값 낮추는 것learning rate은 hyperparameter!SGD+Momentum : 가속도 있음 따라서 기울기가 0인 지점(local minima, saddle points)에서도 update가 진행될 수 있다.  (SGD는 mini batch를 사용)여기서 rho는 보통 0.9, 0.99이용 여기서 rho는 보통 0.9, 0.99이용 SGD는 지그재그로 최적화가 되지만(noise 발생), Momentum이 있을 때는 noise를 평균화시켜서 지그재그한 정도가 줄어든다.Nesterov MomentumAdagradRMSProp Adam : RMSProp+MomentumL-BFGS.. 2024. 4. 29.
7장 선형회귀(linear regression) 1. 선형 회귀 선형 회귀 : 실수 벡터 입력이 주어졌을 때 선형적 관계를 지닌 출력 실수 벡터 값을 예측하는 문제 n차원의 입력, m차원의 출력, 데이터 N개 loss값을 가중치 파라미터로 미분하여 loss 값을 낮추는 방향으로 파라미터 업데이트 -> 손실함수를 최소화하는 가중치 파라미터를 가진 선형 회귀 모델 2. 선형 회귀의 수식 선형회귀의 손실함수는 주로 MSE 손실 함수를 사용 각각의 샘플을 따로 계산하는 대신 행렬로 한꺼번에 계산 가능 W와 b로 각각 손실함수를 편미분한 후 경사하강법을 통해 업데이트 3. 선형회귀 실습 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.datasets im.. 2024. 4. 22.
6장 경사하강법 1. 미분, 편미분 편미분: 하나의 입력 변수에 대해서만 미분 gradient : 기울기 벡터 선형계층 미분: m차원의 벡터를 출력으로 갖는 함수 f를 n차원의 벡터 x로 미분하는 경우 2. 경사하강법 경사하강법(gradient descent): 손실함수의 출력을 최소로 만드는 입력을 찾기 위한 방법 -> 손실 함수의 출력값을 낮추기 위해 가중치 파라미터로 미분하여 얻은 그래디언트를 학습률과 곱해서 현재 가중치 파라미터에서 빼줌 ->그래디언트와 반대방향으로! 경사하강법은 지역 최소점(local minima)에 빠질 문제점이 존재하지만, 심층신경망은 가중치 파라미터의 크기가 매우 커지게 되는데, 높은 차원의 공간에서는 지역 최소점이 큰 문제가 되지는 않음. 학습률은 하이퍼파라미터로서, 잘 설정해주어야 한다.. 2024. 4. 22.
5장. 손실함수 1. 손실함수 N개의 데이터 샘플, n차원 L1 L2 : Euclidean distance RMSE MSE MSE는 L2 노름의 제곱에 상수를 곱한 2. 실습 def mse(x_hat, x): # |x|=(batch_size, dim) print((x-x_hat)**2) y=((x-x_hat)**2).mean() return y x=torch.FloatTensor([[1,1],[2,2]]) x_hat=torch.FloatTensor([[0,0],[0,0]]) print(mse(x_hat,x)) #2.5 torch.nn.function 사용 import torch.nn.functional as F F.mse_loss(x_hat,x) #2.5 F.mse_loss(x_hat,x, reduction='sum').. 2024. 4. 10.
4장. 선형계층 선형계층은 행렬의 곱과 벡터의 덧셈으로 이루어짐! 1. 행렬곱(matmul) x=torch.FloatTensor([[1,2],[3,4],[5,6]]) y=torch.FloatTensor([[1,2],[1,2]]) z=torch.matmul(x,y) print(z) print(z.size()) // 3x2 2. 배치행렬곱(bmm) bmm은 마지막 2개의 차원을 행렬 취급하여 병렬로 행렬 곱 연산 수행 x=torch.FloatTensor(3,3,2) y=torch.FloatTensor(3,2,3) z=torch.bmm(x,y) print(z.size()) #3x3x3 3. 선형계층 W=torch.FloatTensor([[1,2],[3,4],[5,6]]) b=torch.FloatTensor([2,2]) def.. 2024. 4. 10.