Do it 딥러닝을 읽고..
DNN/딥러닝2021. 7. 22. 15:23Do it 딥러닝을 읽고..

이책을 21년 6월 말에서 7월중순까지 약 한달간 읽었습니다. 이책은 딥러닝을 처음 접하는 사람에게 정말 휼륭한 책입니다. 단순히 라이브러리를 끌어다 쓰는것이 아닌, class를 이용해 딥러닝의 기본적인 알고리즘들을 한땀한땀 만들어 나갑니다. 이책의 저자가 여러 딥러닝책을 번역한 경험이 있어 더욱더 휼륭한 책이였던 것 같습니다. 이 책의 저자가 직접 강의한 자료가 있어 같이 보시면 더욱더 좋을 것 같습니다.! (무료) https://www.youtube.com/watch?v=jg8zTIGDPss&list=PLJN246lAkhQgbBx2Kag0wIZedn-P9KcH9 -저자 블로그 - https://tensorflow.blog/ 텐서 플로우 블로그 (Tensor ≈ Blog) 머신러닝(Machine Lea..

순환신경망(RNN)
DNN/딥러닝2021. 7. 8. 16:09순환신경망(RNN)

-time series- 이때까지 인공신경망에 사용한 데이터는 각 샘플이 독립적이였다고 가정하였습니다. 이런 가정 때문에 우리는 에포크마다 전체 샘플을 섞은 후에 모델 훈련을 진행 할 수 있었습니다. 하지만 우리가 다루는 데이터가 모두 독립이라는 보장은 없습니다. 예를들어 한시간전 주식의 가격과 지금의 주식 각격은 독립이라고 말할 수있을까요 ? 즉 한시간적 가격이 지금의 가격에 아무런 영향을 미치지 않았을까요? 확신할 순 없지만 두 가격은 깊은 연관이 있을 것입니다. 이처럼 일정 시간 간격으로 배치된 데이터를 시계열 데이터(time series)라 합니다. 시계열 데이터를 포함하여 샘플에 순서가 있는 데이터를 일반적으로 순차 데이터(sequential data)라 부릅니다. 대표적인 순차 데이터의 예가 ..

합성곱 신경망 (CNN)
DNN/딥러닝2021. 7. 7. 17:25합성곱 신경망 (CNN)

합성공 신경망을 알아보기전에 먼저 합성곱 연산이 어떻게 진행되는지 알아봅시다. 합성곱(컨볼루젼) - 합성곱은 두 함수에 적용하여 새로운 함수를 만드는 수학 연산자 입니다. 그림을 보며 합성곱이 어떻게 진행되는지 알아 봅시다. 이런식으로 나머지도 한칸씩 움직여가며 연산하면 됩니다. 하지만 주의할점이 있습니다. 합성곱신경망은 합성곱을 쓰지 않는 답니다...! 대부분의 딥러닝 패키지들은 합성곱 신경망을 만들때 합성곱이 아니라 교차 상관을 사용합니다. 교차상관 교차상관연산은 합성곱연산과 크게 다르지않습니다. 오히려 더 간단하지요. 우리는 합성곱 연산을 할때 가중치 배열을 뒤집었던것을 기억 하시나요 ? 교차상관에서는 배열을 뒤집지 않아도 됩니다. 바로 계산하면 됩니다.! 왜 교차상관을 사용할까요 ? 그 이유는 모..

다중 분류 신경망
DNN/딥러닝2021. 7. 6. 16:14다중 분류 신경망

다중 분류 신경망을 만들기 위해서는 소프트맥스(softmax)함수와 크로스 엔트로피(cross entropy)손실함수라는 새로운 개념을 알아야 합니다. 다중분류의 개념 다중 분류의 문제점 및 소프트맥스 함수 만약 활성화 출력의 값이 위와 같다면 즉 , 각 출력의 합이 1이 아니라면 비교 하기 쉽지 않습니다. 우리는 확률과 같이 각각의 출력을 뽑아내고 싶습니다. 어떻게 하면 될까요 ?? 이때 softmax 함수의 유용함이 나옵니다. 소프트맥스 함수를 적용해 출력강도를 정규화합니다. softmax의 정의 : 이와 같이 소프트맥스함수에는 출력층에서 계산된 선형출력이 필요합니다. 시그모이드 공식에서 선형출력(z)를 뽑아 낼 수 있습니다. ※정리 다중분류에서 통과한 값들은 소프트맥스 함수를 거치며 적절한 확률값으..

다층 신경망
DNN/딥러닝2021. 7. 6. 14:23다층 신경망

1. 배치 경사 하강법. 지금까지 사용한 경사하강법 알고리즘은 알고리즘을 1번 반복할때 1개의 샘플을 사용하는 확률적 경사 하강법을 사용 했습니다. 이 방법은 가중치를 1번 업데이트 할때마다 1개의 샘플을 사용하므로 손실함수의 전역 최솟값을 불안정하게 찾습니다. 배치 경사 하강법은 가중치를 1번 업데이트 할대 전체의 샘플을 사용하므로 손실 함수의 전역 최솟값을 안정적으로 찾을 수 있습니다. 하지만 배치 경사 하강법은 전체샘플을 계산하므로 계산량이 매우 많습니다. 즉, 우리는 배치 경사 하강법을 효율적으로 사용하기 위해 연산에 대해 알아 볼 필요가 있습니다.! 2.벡터화된 연산 & 행렬 연산. 이때까지 정방향 계산을 할때 가중치와 입력을 각각 곱하여 더했습니다. z = np.sum(self.w * x) +..

훈련 노하우
DNN/딥러닝2021. 7. 5. 18:05훈련 노하우

ML 모델이 실전에서 좋은 성능을 내게 하려면 어떻게 해야될까요 ? 학습 / 테스트 데이터 세트의 학습이 가장 중요할것 입니다. 하지만 테스트 세트로 모델을 튜닝하면 실전에서 좋은 성능을 기대하기 힘듭니다. 답을 알고있는 상태로 시험을 치면 시험을 잘 볼 수 밖에 없고, 만약 시험문제를 조금 바꾸면 좋은 성적을 기대하기 힘들겁니다. 그래서 모델을 튜닝할때 훈련세트,검증세트,테스트세트를 나눠야 합니다. 1. 데이터 세트 준비하기 from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split cancer = load_breast_cancer() x = cancer.data y = cancer..

로지스틱 회귀
DNN/딥러닝2021. 6. 23. 21:24로지스틱 회귀

퍼셉트론 1957년 코넬 항공 연구소에서 이진 분류 문제에서 최적의 가중치를 학습하는 퍼셉트론(Perceptron)알고리즘을 발표. 퍼셉트론은 마지막 단계에서 샘플을 이진 분류하기 위하여 계단 함수 사용. 아달린 퍼셉트론을 개선한 적응형 선형 뉴런 로지스틱 회귀 아달린에서 조금 더 발전한 형태. (활성화 함수는 비선형 함수를 사용) 시그모이드 함수 만드는 과정 오즈 비(odds ratio) > 로짓 함수 > 시그모이드 함수 odds ratio 란 성공 확률과 실패확률의 비율을 나타내는 통계 로짓 함수 > odds ratio에서 로그 함수를 취하여 만든 함수. 로짓 함수를 z라 놓고 z에 관해 식을 변환하면 로지스틱회귀는 이진분류가 목적이므로 -무한대 ~ +무한대까지 같은 z의 값을 조절해야 합니다. 그래..

머신러닝의 기초
DNN/딥러닝2021. 6. 23. 08:35머신러닝의 기초

이번 장에서는 경사하강법&오차 역전파 알고리즘을 응용해 선형회귀모델을 만들어 보는 시간을 갖도록 하겠습니다. 1. 먼저 문제 해결을 위해 당뇨병 환자의 데이터를 준비하겠습니다. from sklearn.datasets import load_diabetes diabetes = load_diabetes() 2. 입력과 타겟 데이터의 크기를 확인하겠습니다. print(diabetes.data.shape, diabetes.target.shape) (442, 10) (442,) 3.당뇨병 환자의 데이터를 시각화 하겠습니다. import matplotlib.pyplot as plt plt.scatter(diabetes.data[:,2],diabetes.target) #모든 특성을 하나의 그래프에 그릴 수 없으므로 하..

image