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

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

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

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..

모델의 성능을 판단하는 평가지표 중 하나가 정확도(accuracy)이다. 하지만 정확도는 불균형한 레이블 값 분포에서 ML 모델의 성능을 판단할 경우 적합한 평가지표가 아닙니다. 다음과 같이 sex 피처가 1이면 0 , 0이면 1로 예측하는 아주 간단한 예측 분류기를 통해 정확도르 도출하겠습니다. from sklearn.base import BaseEstimator class MyDummyClassifier(BaseEstimator): def fit(self,X,y=None): pass def predict(self,X): pred = np.zeros((X.shape[0],1)) for i in range(X.shape[0]): if X['Sex'].iloc[i] ==1: pred[i] = 0 else:..
조건문 : if , elif ,else 반복문 : while > 중단 하고 싶을땐 ? break > 건너 뛰고 싶을땐 ? continue while True: value = input("Integer , please [q to quit]:") if value == 'q': break number = int(value) if number % 2 == 0: continue print(number , "squared is", number**2) break 확인하기 : else break는 어던 것을 체크하여 그것을 발견했을 경우 종료하는 while문을 작성할 때 쓰인다. while 문이 모두 실행되었지만 발견하지 못했을 경우에는 else가 실행된다. numbers = [1,3,5] position = 0 wh..

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline titanic_df = pd.read_csv('./train.csv') titanic_df.head() info() 메소드를 사용해 결측치를 확인해 본다. titanic_df.info() RangeIndex: 891 entries, 0 to 890 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 PassengerId 891 non-null int64 1 Survived 891 non-null int64 2 Pclass..

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

붓꽃 품종 예측. 1. 붓꽃 데이터를 불러온다. 2. 데이터와 타겟값을 나눈다. 3. 데이터 세트를 분리 한다. 4. 학습한다.(결정트리 사용) 5. 예측한다. 6.예측 정확도를 확인한다. import pandas as pd from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score iris = load_iris() iris_data = iris.data iris_label = iris.target X_train,X_test,y_train,..
리스트 -리스트 생성. 1. 리스트는 콤마( , )로 구분하고 대괄호( [ ] )로 둘러 써여 있습니다. 2. list() 메소드를 이용해 빈 리스트를 할당할 수 있습니다. Today_menu = ['apple','rice'] empty_list = list() empty_list2 = [] -다른 데이터 타입을 리스트로 변환하기 : list() > list()함수는 다른 데이터 타입을 리스트로 변환해 줍니다. 다음 예제는 하나의 단어를 알파벳으로 나눈 예제입니다. list("dog") ['d','o','g'] 리스트 또한 [offset]으로 항목을 얻을 수 있고 동시에 항목을 바꿀 수 있습니다. country = [ "Korea" , "USA" , "UK" ,"Japan"] country[0] # Ko..