반응형 Programming/MachineLearning17 딥러닝 데이터가 부족할 때 해결하는 방법 K겹 교차 검증이란? (feat 광석 돌 구분 예제 사용) 문제의 발단 딥러닝 모델을 학습시키기 위해서는 방대한 양의 데이터셋이 필요하다. 하지만 현실에서 데이터셋을 다량으로 구축하기는 쉽지 않은 일이다. 그럼에도 불구하고 예측정확도가 높은 모델을 만들어야 하는 프로그래머들이 연구한 결과 해결책을 찾았다. 바로 K겹 교차검증이다. K겹 교차검증이란(k-fold cross validation)? 데이터셋을 먼저 여러개로 나눈다. 예들들어 데이터셋을 5개로 구분한다고 하면 80%는 학습 데이터로 사용하고, 나머지 20%는 테스트셋으로 사용하는 것이다. 한번의 학습이 완료되면 다시 데이터셋을 5개로 구분하고 이번에도 다시 학습셋과 테스트셋을 구분한다. 구성만 다르게 해서, 다시 학습을 진행한다. 이 과정이 반복되면, 적은 데이터셋을 가지고도 많은 학습을 진행할 수 있.. 2021. 12. 16. 딥러닝 과적합 문제 해결하기(feat 광석 판별하기) 과적합(Overfitting)이란? 과적합은 특정 모델이 학습 데이터셋 안에서는 일정 수준 이상의 예측 정확도를 보이지만, 새로운 데이터를 적용 하면 정확도를 높이지 못하는 현상을 의미한다. 과적합이 발생하는 이유? 모델 내에 층이 너무 많이 쌓이게 되거나, 변수가 복잡하면 과적합이 발생한다. 또한 테스트셋과 학습셋이 중복되면, 과적합이 발생한다. 딥러닝 모델에서는 입력층, 은닉층, 출력층에 상당히 많은 노드들이 중첩되기 때문에 과적합 문제에 빠지기가 쉽다. 과적합 문제를 해결하는 방법 과적합에 빠지지 않고, 정확한 예측 모델을 만들기 위해서는 학습 데이터와 테스트 데이터를 완전히 분리하는 것이 방법이 된다. 예를 들어 100개의 데이터를 샘플로 가지고 있는 데이터셋이라면, 70개는 학습셋으로 사용하고,.. 2021. 12. 16. 딥러닝 다중 분류 모델 Multi Classfication 설계하기 (feat 아이리스 품종 분류하는 모델 설계하기) 다중 분류 문제 0과 1 결과값 중 하나를 선택하는 문제가 아닌, 3개 이상의 결과값을 예측하는 모델을 다중 분류(Mulit Classification)이라 한다. 원-핫 코딩(one-hot-coding) 결과값에 문자열이 포함되어 있다면 이를 0과1로 구성된 숫자로 변경해주는 작업이 필요하다. 사이킷 런 라이브러리의 LabelEncoder()함수를 사용해서 원핫코딩 작업을 진행한다. 예를 들어 결과값이 'a', 'b', 'c' 3개의 값이 있다고 가정하자. 결과값을 다음과 같이 변경하는 것이다. a => 1 => [1, 0, 0] b => 2 => [0, 1, 0] c => 3 => [0, 0, 1] 소프트맥스 활성화 함수(softmax) 입력층에서 받은 데이터는 1보다 큰 수로 이루어져 있다. 우리는.. 2021. 12. 16. 딥러닝 실제 모델 만드는 방법 딥러닝 코드 구현해보기 이항 분류 keras 모듈 이용하기 (feat 인디언 당뇨병 문제) 1. 데이터 : 피마 인디언 당뇨병 발생 유무 2. 문제형태 : 이항분류(Binary Classification) 3. 코드 구현 keras 모듈을 호출한다. tf.compat.v1.disable_eager_execution()는 tensorflow 버전 호환 문제를 해결한다. 1 2 3 4 5 from keras.models import Sequential from keras.layers import Dense import numpy import tensorflow as tf tf.compat.v1.disable_eager_execution() cs seed값은 랜덤 테이블 중에서 사용할 테이블을 지정하는 것이다. 넘파이 라이브러리를 사용하면서 tensorflow 기반 딥러닝을 구현하면 일정한 값을 얻.. 2021. 12. 15. 딥러닝 오차 역전파 10분만에 이해하기 딥러닝 오차 역전파 딥러닝은 학습데이터를 가지고 예측결과를 추론하는 알고리즘이다. 입력값은 기울기 a와 절편 b값이다. 딥러닝은 실제데이터와 차이는 부분을 오차로 규정하고, 가중치와 절편을 임의로 조정하면서 오차가 가장작은 부분, 오차 그래프에서 미분이 0이 되는 지점까지 학습을 수행하고 결과를 도출한다. 문제는 퍼셉트론이 다층으로 쌓이면서 가중치와 바이어스의 수정값도 복잡해진다는 것이다. 층이 많아지면서 출력층에서 은닉층, 그리고 입력층으로 가중치+바이어스 수정값을 조정 하는데 이를 역으로 방향이 간다고 해서 오차 역전파(back propagation)라 부른다. 오차 역전파가 수행되는 도식은 다음과 같다. 1. 환경 변수 지정 입력값, 타깃 결과값, 학습률, 데이터셋을 먼저 정의한다. 2. 신경망 실.. 2021. 12. 15. 딥러닝 핵심 개념 신경망 10분만에 이해하기 인간의 신경망 작동 인간의 뇌는 약 1000억개의 뉴런으로 구성된다. 뉴런 사이에는 시냅스라는 연결부위가 존재한다. 신경 말단에서 자극을 받으면 시냅스에서 화학물질이 분비되고, 전위 변화를 일으킨다. 전위가 임계값을 넘기게 되면, 다음 뉴런으로 신호를 보내서 말단 신경에서 온 자극을 느끼고 이해하고 생각하고 행동을 취하게 되는 것이다. 딥러닝에서도 이와 유사하게 입력값을 받아서 활성화함수를 사용해서 출력값을 도출해낸다. 딥러닝 신경망의 핵심개념은 인간의 뇌의 뉴런과 시냅스와 유사한 개념인 퍼셉트론(peceptron)이다. 퍼셉트론(perceptron) 퍼셉트론에서 기울기, 절편은 다른 개념이다. 기울기 a는 가중치를 의미하는 w(weight)다. 절편 b는 편향을 뜻하는 바이어스(bias)다. 가중합이란.. 2021. 12. 15. 이전 1 2 3 다음 반응형