본문 바로가기

AI: ML,DL

(12)
[인공지능] 합성곱 신경망의 시각화[인공지능] 합성곱 신경망의 시각화 가중치 시각화 합성곱 레이어는 여러 개의 필터를 사용해 이미지의 특징을 학습한다. 필터에는 커널이라는 가중치가 존재하며, 가중치는 이미지의 2차원 영역에 적용되어 어떤 특징을 두드러지게 하는 역할을 한다. 어떠한 특징이 있는 곳에서는 가중치가 활성화되고 특징이 없다면 활성화 되지 않는다. 모델의 레이어 중 첫번째 합성곱 층에 대한 가중치를 조사하는 과정이다. 특징이 있는 곳에서는 가중치가 활성화되고 특징이 없다면 활성화 되지 않는다. from tensorflow import keras model = keras.models.load_model('best-cnn-model.h5') print(model.layers) conv = model.layers[0] print(conv.weights[0].shape,..
[인공지능] 합성곱 신경망을 활용한 이미지 분류 합성곱 신경망 구축 앞선 포스팅에서 학습한 합성곱 신경망을 직접 구축해보자. from tensorflow import keras from sklearn.model_selection import train_test_split (train_input,train_target),(test_input,test_target) =\ keras.datasets.fashion_mnist.load_data() train_scaled = train_input.reshape(-1,28,28,1)/255.0 #깊이 1 차원 추가 train_scaled, val_scaled, train_target, val_target = train_test_split(train_scaled,train_target,test_size=0.2,ra..
[인공지능] 합성곱 신경망(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값이 나오게 된다. 소프트맥스 함수 처리한다면 의류에 대한 확..
[인공지능] 확률적 경사 하강법 확률적 경사 하강법 이전 포스팅의 경우 데이터셋이 이미 미리 전부 준비되어있는 상태였다. 하지만, 일부 데이터셋이 준비된 상황에서 시시각각 새로운 데이터셋이 들어오면 이 데이터셋들에 대해서도 훈련을 시켜야한다. 이렇게 원래 학습된 모델을 새 데이터에 대해 업데이트 하는 방식으로 학습하는 모델을 점진적 학습이라고 하고, 그 중 대표적인 알고리즘이 확률적 경사 하강법이다. 확률적 경사 하강법은 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 가파른 경사를 조금 내려간다. 다음 훈련 세트에서 다시 샘플을 하나 추출하여 경사를 조금 내려가고, 전체 샘플이 소진될 때까지 이를 반복한다. 샘플이 전부 소진되는 한 사이클을 에포크라고 부른다. 그리고 이 에포크 이후에 전체 샘플이 최적점에 도달하지 못했을 경우 계속해서..
[인공지능] 로지스틱 회귀 개요: 럭키백의 확률 럭키백을 구입하면 랜덤한 확률로 다양한 생선 중 하나가 등장한다. 소비자는 이를 구입한 뒤 럭키백을 개봉해야 어떤 생선이 들어있는지 확인할 수 있다. 그리고, 판매자는 생선 별로 럭키백에 존재할 확률을 고지해준다. 이 확률을 알기 위해서는 어떤 모델을 활용해야 할까? k-최근접 이웃을 활용하여 럭키백의 생선 근처에 생선 별로 비율을 확인하면 될 듯 싶다. import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv') fish.head() 위 데이터프레임에서 Species는 타깃, 즉 물고기의 종류가 되고 나머지 weight, length, ... 등은 특성이 된다. 데이터를 뽑아 전처리하는 작업을 다음과 같이 거친다. #데이터 ..