본문 바로가기

전체 글

(271)
[인공지능] 합성곱 신경망(CNN, Convolutional Neural Network) 합성곱 신경망(CNN, Convolutional Neural Network) 시각적 이미지 분석에 주로 사용되는 신경망으로, 입력 이미지로부터 유용한 특성만 추출하여 입력 이미지가 어떤 이미지인지 클래스로 분류하는 신경망이다. 인공 신경망의 경우 입력 데이터 전체에 가중치를 적용하는 반면, 합성곱 신경망의 경우 적은 수의 가중치를 곱하게 된다. 합성곱에서는 뉴런이라는 말 대신 필터라고 부르고, 필터에서 말하는 가중치를 커널이라고 한다. 필터를 커널이라고 혼용하는 경우도 많다. 그리고, 출력으로 얻게 된 결과를 특성 맵이라고 한다. 중요한 점 하나는 합성곱 층에서도 여러 개의 필터를 사용할 수 있다. 위 그림의 경우 필터(커널)이 한 개여서 출력이 2X2인 2차원인 특성 맵이 결과이다. 만약 서로 다른 필..
[인공지능] 신경망 모델 훈련 손실 곡선 신경망 모델 훈련 시 fit() 메서드를 활용하는데 이 메서드의 반환 결과로 손실과 정확도가 포함된 딕셔너리가 반환된다. 이를 통해 손실 곡선과 정확도 곡선을 그리면 아래와 같다. import matplotlib.pyplot as plt history = model.fit(train_scaled,train_target,epochs=5) plt.plot(history.history['loss']) plt.xlabel('epoch') plt.ylabel('loss') plt.show() plt.plot(history.history['accuracy']) plt.xlabel('epoch') plt.ylabel('accuracy') plt.show() 위 결과를 보면 에포크마다 손실이 감소하고 정확도..
[인공지능] 심층 신경망 심층 신경망 심층 신경망은 입력층과 출력층 사이에 여러 개의 은닉층이 존재하는 인공 신경망이다. 심층 신경망은 복잡한 비선형 관계를 모델링할 수 있다. 은닉층에는 활성화 함수가 있다. 활성화함수는 비선형적인 모델을 적용시켜 단순 선형 결과를 얻는 것을 피한다. 많이 사용하는 함수는 시그모이드/렐루 함수 등이 존재한다. 층을 만드는 방법은 이전 포스팅과 같다. dense1 = keras.layers.Dense(100,activation='sigmoid',input_shape=(784,)) dense2 = keras.layers.Dense(10,activation='softmax') dense1은 은닉층이며 'sigmoid' 활성화 함수를 적용한 100개의 뉴런이 존재하는 밀집층이다. 그리고, 784개의 입..
[인공지능] 인공 신경망(딥러닝, DNN) 인공 신경망 인공 신경망은 확률적 경사 하강법을 사용하는 로지스틱 회귀와 같다. 로지스틱 회귀는 선형 방정식을 사용한 분류 알고리즘으로 소개했다. 로지스틱 회귀는 각 클래스에 대해 선형 방정식을 통해 z값을 구한 뒤 소프트맥스 함수를 거쳐 각 클래스에 대한 확률을 구할 수 있다. 참고로 인공 신경망과 딥러닝은 사실상 동의어이며, DNN(Deep Neural Network, 심층 신경망)이라고 불리기도 한다. 딥러닝에서 자주 활용되는 패션 MNIST의 경우 28*28(가로*세로) 픽셀로 표현된 바지, 치마, .., 구두 등 10개의 의류로 구성되어있다. 여기서, 28*28 픽셀은 각 의류를 나타내는 특성인 x가 되고, 이를 선형방정식을 거치면 y값이 나오게 된다. 소프트맥스 함수 처리한다면 의류에 대한 확..
[디버깅] EC2 인스턴스 먹통 혹은 CPU 점유율 100% 문제 일부 프로그램을 잘못 실행시켜 CPU 할당량이 100이 되어 ssh 접속도 안되고 말 그대로 먹통일 때 해결책. 이 해결책에서 가장 중요한 점은 어떤 프로세스가 CPU 100을 차지하고 있는지 예상해야됨. 보통 맨 마지막에 한 작업이 문제가 된다. 필자는 Docker Compose 작업 중 compose를 실행 시킨 이후 이런 문제가 발생하여 컨테이너를 모두 삭제해야겠다는 생각이 들었음. 해결 과정 1. EC2 인스턴스 중지 2. EC2 인스턴스 하드웨어 사양이 낮을경우 CPU 크레딧 무제한으로 변경 3. 이후 EC2 시작 4. 이 과정에서 새로고침을 계속 누르며 EC2가 '실행 중'이 뜰 때까지 반복한 뒤, '실행중'이라고 나오면 SSH로 계속 접속을 시도한다. '실행중' 되자마자 바로 접속이 불가능하..
[인공지능] 확률적 경사 하강법 확률적 경사 하강법 이전 포스팅의 경우 데이터셋이 이미 미리 전부 준비되어있는 상태였다. 하지만, 일부 데이터셋이 준비된 상황에서 시시각각 새로운 데이터셋이 들어오면 이 데이터셋들에 대해서도 훈련을 시켜야한다. 이렇게 원래 학습된 모델을 새 데이터에 대해 업데이트 하는 방식으로 학습하는 모델을 점진적 학습이라고 하고, 그 중 대표적인 알고리즘이 확률적 경사 하강법이다. 확률적 경사 하강법은 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 가파른 경사를 조금 내려간다. 다음 훈련 세트에서 다시 샘플을 하나 추출하여 경사를 조금 내려가고, 전체 샘플이 소진될 때까지 이를 반복한다. 샘플이 전부 소진되는 한 사이클을 에포크라고 부른다. 그리고 이 에포크 이후에 전체 샘플이 최적점에 도달하지 못했을 경우 계속해서..
[인공지능] 로지스틱 회귀 개요: 럭키백의 확률 럭키백을 구입하면 랜덤한 확률로 다양한 생선 중 하나가 등장한다. 소비자는 이를 구입한 뒤 럭키백을 개봉해야 어떤 생선이 들어있는지 확인할 수 있다. 그리고, 판매자는 생선 별로 럭키백에 존재할 확률을 고지해준다. 이 확률을 알기 위해서는 어떤 모델을 활용해야 할까? k-최근접 이웃을 활용하여 럭키백의 생선 근처에 생선 별로 비율을 확인하면 될 듯 싶다. import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv') fish.head() 위 데이터프레임에서 Species는 타깃, 즉 물고기의 종류가 되고 나머지 weight, length, ... 등은 특성이 된다. 데이터를 뽑아 전처리하는 작업을 다음과 같이 거친다. #데이터 ..
[인공지능] 특성 공학과 규제(다중 회귀, 릿지, 라쏘) 개요 이전 포스팅에서 다항 회귀를 통해 농어의 무게를 어느 정도 예측할 수 있었으나, 훈련 세트보다 테스트 세트의 결정계수가 높아 과소 적합한게 문제였다. 다중 회귀 이전 포스팅들에서는 하나의 특성을 사용하여 선형 회귀 모델을 훈련시켰다. 이와 다르게 여러 개의 특성을 사용한 선형 회귀를 다중 회귀라고 부른다. 만약 2개의 특성을 사용하게 될 경우 선형 회귀는 평면을 학습하게 된다. 우측 평면은 선형 회귀 방정식인 Y = a * X1 + b * X2 + 절편 으로 정리된다. 만약 특성이 3개일 경우는 3차원이기 때문에 그리거나 상상할 수 없다. 하지만 선형 회귀를 특성이 많은 고차원에서도 적용할 수 있다. 다음 예제에서는 농어의 길이, 높이, 두께 3가지 특성을 고려하여 무게를 예측하려고 한다. 그리고,..