Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Deep Learning/[Books] Do it! 정직하게 코딩하며 배우는 딥러닝 입문 28

합성곱 신경망 - 합성곱 연산과 교차상관 연산

이번 포스팅에서는 합성곱신경망을 구현하기 전에 합성곱 연산에 대한 개념을 짚어본다. 합성곱 연산 vs 교차상관 연산 합성곱은 두 함수에 적용하여 새로운 함수를 만드는 수학 연산자이다. 두 배열 x와 w가 있을 때, 둘 중 한 배열의 원소 순서를 뒤집은 후 왼쪽 부터 각 배열 원소끼리 곱한 후 더하는 연산이다. 수식으로는 x * w로 표기한다. 위와 같은 방식으로 끝까지 진행하면 아래와 같이 새로운 배열이 생성된다. 합성곱 연산을 파이썬으로 수행해보자. 원본 배열을 뒤집는 방법은 2가지 정도가 있는데, numpy의 flip() 함수나 파이썬의 슬라이스 연산자를 사용하는 방법이다. import numpy as np w = np.array([2,1,5,3]) x = np.array([2,8,3,7,1,2,0,..

Keras를 활용하여 다중분류 신경망 구현하기

이번 포스팅에서는 keras를 사용하여 다중분류 신경망을 구현해본다. Keras Keras는 딥러닝 패키지를 편리하게 사용하기 위해 만들어진 래퍼(Wrapper) 패키지이다. 래퍼(Wrapper)는 자바에서는 기본 자료형을 객체형으로 바꿔주는 클래스들을 의미하는데, 파이썬에는 정확히 무엇을 의미하는지 모르겠다.. 한 블로그에서는 Keras를 Tensorflow 라이브러리의 일종이라고 설명하기도 한다. 어쨋든 Keras는 사용자가 Tensorflow를 좀 더 쉽게 사용할 수 있도록 만들어놓은 패키지인 것 같다. 더보기 Wrapper Class in JAVA www.tcpschool.com/java/java_api_wrapper 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩..

[모델 구축] 사이킷런 SGDClassifier 클래스

이번 포스팅에서는 사이킷런의 패키지를 사용해서 로지스틱 회귀 모델을 구현하는 방법을 알아볼 것이다. SGDClassifier라는 패키지를 사용해볼 것이다. SGDClassifier는 사이킷런의 경사하강법이 구현된 클래스이다. 이 클래스는 로지스틱 회귀 문제 이외에도 여러가지 문제에 경사하강법을 적용할 수 있다. 그럼 Documentation을 통해 클래스를 자세하게 살펴보자. * 회귀 문제에서는 SGDRegressor를 사용한다. 정의 파라미터가 무지하게 많다. 가장 첫줄에 확률적 경사하강법을 사용한 선형회귀 모델이라고 나와있다. 선형회귀 모델인데 왜 로지스틱회귀모델에 사용하는지 궁금할 수도 있다. 이전 포스팅에서 다뤘듯이 로지스틱 회귀모델도 선형회귀모델에 이외에도

다중분류 다층신경망 구현하기 - 하

이번 포스팅에서는 다중분류 다층신경망을 Python으로 구현해본다. 입력데이터는 텐서플로에서 제공하는 패션 MNIST 데이터셋을 사용한다. Install Tensorflow ! pip install tensorflow_gpu==2.0.0-rc1 Import Tensorflow import tensorflow as tf load Data (x_train_all, y_train_all),(x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data() class_names = ['티셔츠/윗도리','바지','스웨터','드레스','코트','샌들','셔츠','스니커즈','가방','앵글부츠'] 데이터를 로드하고 클래스명을 지정한다. 클래스명은 패션 MNIST 데이터 세..

다중분류 다층신경망 구현하기 - 상

이번 포스팅에서는 다중분류 다층신경망의 개념과 기본적인 구조에 대해서 알아본다. Multiclass Classification 다중분류는 말 그대로 여러 개의 클래스로 분류할 수 있는 모델을 의미한다. 이전 포스팅에서 다뤘던 이진분류모델과는 출력층의 개수만 다르다. 이진분류는 양성클래스에 대한 확률(y_hat)만 출력했기 때문에 출력층의 뉴런이 1개였지만 다중분류 신경망은 출력층에 분류할 클래스 개수만큼 뉴런을 배치한다. Problem. 그런데 이진분류 모델에서 출력층의 개수만 늘려서 다중분류 모델로 사용하면 한 가지 문제가 생긴다. 아래의 두 그림은 사과, 귤, 포도의 이미지를 분류하는 다중분류신경망의 출력층만 나타낸 것이다. 왼쪽과 오른쪽의 신경망은 모두 자동차를 타깃 클래스로 예측하고 있다. 과연 ..

미니배치경사하강법을 이용하는 로지스틱 회귀 모델 구현하기

이번 포스팅에서는 미니배치경사하강법의 개념과 이를 이용해서 학습하는 로지스틱 회귀 모델을 구현해본다. Mini Batch Gradient Descent Method. 미니배치경사하강법은 확률적 경사하강법과 배치경사하강법의 장점을 절충한 방식으로, 실전에서 가장 많이 사용되는 경사하강법이다. 구현 방식은 배치 경사 하강법과 비슷하지만 에포크마다 전체 데이터를 사용하는 것이 아니라 조금씩 나누어(Mini Batch) 정방향 계산을 수행하고 그레이디언트를 구하여 가중치를 업데이트 한다. 미니 배치의 크기는 보통 16,32,64 등 2의 배수를 사용한다. 미니배치의 크기가 1이라면 확률적 경사하강법이 되는 것이고, 입력데이터의 크기와 동일하다면 배치경사하강법이 된다. 미니배치의 크기가 작으면 확률적 경사하강법처..

Python으로 다층신경망 구현하기

이번 포스팅에서는 저번포스팅에서 다룬 가중치, 절편 도함수를 토대로 학습하는 다층신경망을 Python으로 구현해본다. Dataset Load & Preprocessing import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler cancer = load_breast_cancer() x = cancer.data y = cancer.target x_train_all, x_test, y_train_all, y_te..

[모델 튜닝] K-폴드 교차검증

이번 포스팅에서는 전체 샘플 데이터의 개수가 많지 않을 때 데이터를 부풀리는 방법인 교차검증(Cross Validation)에 대해서 다룬다. Why? 훈련시킬 데이터의 개수가 부족하면 머신러닝 모델이 다양한 패턴을 학습하지 못하기 때문에 성능 높은 모델을 만들기 어렵다. 현실에서는 원하는 데이터를 충분하게 확보하기 어려운 경우가 많기 때문에 데이터의 특성은 유지하면서 데이터의 양을 늘리는 기법이 필수적이다. 교차검증도 그러한 방법 중 하나이다. How? 기존방식 이전 포스팅까지 사용했던 방식은 전체 데이터를 8:2로 나눠 훈련세트를 얻은 후, 이 훈련세트를 다시 8:2로 분할해 검증세트로 사용했다. 전체 데이터가 100개라고 가정하면 60개의 데이터만 훈련에 사용할 수 있던 셈이다. K-폴드 교차검증 ..

[모델 튜닝]하는 법 2 - 가중치 제한(feat. L1, L2규제)

이번 포스팅에서는 과대적합을 해결하는 방법 중 하나인 '가중치 제한'을 다룬다. 가중치 제한이란 모델 훈련과정에서 가중치의 수정 범위를 제한하는 기법을 말한다. 그럼 먼저, 가중치의 수정범위를 제한하는 것이 어떻게 과대적합을 해결해주는지 부터 알아보자. 이 그래프, 성능이 높다고 말할 수 있을까? 이 그래프는 샘플 데이터 6개에 너무 집착한 나머지 박스로 표시한 샘플 데이터를 제대로 표현하지 못하고 있다. 모델이 몇개의 데이터에 집착하면 새로운 데이터에 적응하지 못하므로 좋은 성능을 가졌다고 말할 수 없다. 이런 모델은 훈련세트에서는 높은 성능을 낼지 모르지만 검증세트, 테스트세트에서는 높은 성능을 내기 어렵다. 즉 과대적합이 발생하는 것이다. 가중치의 수정범위를 조절한다는 것은 모델이 훈련데이터에 대해..

[모델 튜닝] 하는 방법 - 과대적합과 과소적합

이번 포스팅에서는 머신러닝/딥러닝 모델의 성능평가 이슈 2가지 과대적합(overfittiong)과 과소적합(underfitting)에 대해서 다룬다. | Overfitting VS Underfitting 과대적합(Overfitting)이란 모델이 훈련세트에서는 좋은 성능을 내지만 검증세트에서는 낮은 성능을 내는 경우를 말한다. 구체적인 예로 분류 문제에서 훈련세트의 정확도가 99%이고, 검증세트의 정확도가 80% 수준이라면 과대적합을 의심할 수 있다. 반면에 과소적합(Underfitting)은 훈련세트와 검증 세트의 성능에는 차이가 크지 않지만 모두 낮은 성능을 내는 경우이다. | 언제 발생해?? 도서 에서는 과소, 과대 적합이 발생하는 원인을 3가지 관점에서 분석했다. 1. 훈련세트의 크기와 과대/과소..