전체 글 150

[TensorFlow] 오토 인코더를 이용한 이미지 노이즈 제거

오토 인코더를 설계하여 MNIST 데이터의 노이즈 제거를 해보겠습니다. import numpy as np import tensorflow as tf from tensorflow.keras import datasets import matplotlib.pyplot as plt from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import Conv2D from tensorflow.keras.layers import MaxPool2D from tensorflow.keras.layers import UpSampling2D # 랜덤 시드 설정 np.rand..

[TensorFlow] RNN, LSTM, GRU를 이용한 영화 리뷰 감성 분석

RNN, LSTM, GRU를 이용하여 imdb 영화 리뷰 감성 분석을 해보겠습니다. import numpy as np import tensorflow as tf from tensorflow.keras.datasets import imdb from tensorflow.keras.preprocessing import sequence from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, SimpleRNN, LSTM, GRU from tensorflow.keras.layers import Embedding from tensorflow.keras.layers import Dropout from tensorf..

[Deep Learning] 오토 인코더 (Auto-Encoder)

오토 인코더(Auto-Encoder)는 입력 데이터를 코드(code)라고 부르는 은닉층으로 인코딩하는 인코더(encoder)와 코드를 디코딩하는 디코더(decoder)로 구성된 네트워크입니다. 여기서 인코딩은 입력 데이터의 차원을 축소하는 것을 의미하고, 디코딩은 차원 축소된 데이터를 다시 원래 데이터로 차원을 복원하는 것을 의미합니다. 오토 인코더는 아래 구조와 같이 입력층보다 적은 수의 노드로 구성된 은닉층을 이용하여 입력 데이터의 차원을 축소합니다. 이후 입력층과 같은 크기의 출력층을 구성합니다. 이러한 방법은 기존의 입력 데이터 X를 이용하여 타겟 데이터 Y를 예측하는 것과 다릅니다. (오토 인코더는 비지도 학습입니다.) 오토 인코더는 주성분 분석(차원 축소)를 위해 사용했지만, 최근에는 컴퓨터 ..

AI/Deep Learning 2023.06.08

[Deep Learning] RNN (Recurrent Neural Networks)

순환 신경망(RNN: Recurrent Neural Networks)은 시퀀스(sequence) 데이터를 이용한 네트워크입니다. 여기서 시퀀스 데이터란 보통 시계열(time series) 데이터라고도 불리며, 시점을 기준으로 데이터가 다른 것을 의미합니다. 주식 데이터가 시계열 데이터 중 하나입니다. RNN은 DNN, CNN과 달리 출력층의 결과를 재사용하는 구조입니다. 위 그림에서 A를 은닉층이라고 부르며, A의 출력은 h입니다. 그리고 입력은 X, h입니다. 이 부분이 DNN, CNN과 다른 점입니다. 즉, 은닉층의 출력값이 다시 입력층으로 되돌아가는 구조로 h가 재사용되고 있습니다. 다시 말해서 이전 상태를 기억하여 다음 상태를 예측한다는 의미입니다. 따라서, 시퀀스 데이터를 이용한 예측에 사용되는..

AI/Deep Learning 2023.06.08

[Deep Learning] CNN 파라미터 수 계산

CNN기반의 네트워크를 다음과 같이 구성했다고 가정해 봅시다. summary()를 이용하여 모델의 파라미터 수를 확인할 수 있는데, 여기서 파라미터의 수 계산 공식은 다음과 같습니다. conv param size = filter size * input channel * output channel + bias 위 summary() 내용을 기준으로 파라미터 수를 계산해 보겠습니다. 첫 번째 conv2d 레이어의 파라미터는 어떻게 416이 될까요? 먼저 conv2d의 필터 사이즈는 5 * 5입니다. 그리고 input_shape는 (28, 28, 1)로, 입력 채널 수는 1이며 출력 채널 수는 16입니다. 또한 바이어스는 출력 채널 수마다 1개씩 증가하므로 16입니다. 따라서 conv2d의 필터 사이즈는 (5 ..

AI/Deep Learning 2023.06.07

[Deep Learning] CNN (Convolutional Neural Networks)

CNN(Convolution Neural Networks) 컨볼루션 연산은 우리말로 합성곱이라고 합니다. 즉 CNN은 합성곱을 이용한 신경망입니다. 합성곱은 원본 이미지의 각 픽셀을 포함한 주변 픽셀과 필터의 모든 픽셀을 각각 곱연산을 하고, 그 결과를 모두 합해서 새로운 이미지에 넣습니다. ref : excelsior-cjh.tistory.com/79 필터를 사용하는 이유는 이미지에서 우리가 필요한 특정 영역을 추출하기 위해서입니다. 이전에는 사람이 수작업으로 필터를 만들었습니다. 검출 알고리즘이나 SIFT 등이 해당됩니다. 이것은 적용하고자 하는 분야에 대한 전문적 지식을 필요로 하며 시간과 비용이 많이 드는 작업입니다. 딥 러닝 기반의 컨볼루션 연산은 특징을 검출하는 필터를 수작업으로 설계하는 것이..

AI/Deep Learning 2023.06.07

[Deep Learning] 활성화 함수 (Activation Function)

활성화 함수는 뉴럴 네트워크(neural networks)에서 이전 층(layer)의 결괏값을 다음 층으로 전달하는 역할을 합니다. 아래 그림은 네트워크에서 활성화 함수의 위치와 역할을 나타냅니다. 이러한 활성화 함수가 필요한 이유는 네트워크의 복잡도를 올려 비선형 문제를 해결하기 위함입니다. DNN에서 활성화 함수는 비선형 함수를 사용하는데, 그 이유는 비선형 활성화 함수 없이 은닉층을 쌓는 것만으로는 비선형 문제를 해결할 수 없기 때문입니다. 그 이유는 은닉층의 수가 3이고 출력 함수를 y(x)라고 할 때, 활성화 함수 h(x)가 선형이면 합성 함수 1차 함수의 합성 함수 형태이며 이것은 1층으로 구성된 모델과 동일하기 때문입니다. 활성화 함수에는 여러 종류가 있지만 가장 자주 쓰는 3가지를 알아보겠..

AI/Deep Learning 2023.06.02

[Deep Learning] 퍼셉트론(Perceptron)과 뉴럴 네트워크(Neural Networks)

퍼셉트론(perceptron)은 프랑크 로젠블라트가 1957년에 제안한 초기 형태의 인공 신경망(ANN: Artificial Neural Netwokrs)입니다. 퍼셉트론은 다수의 입력으로부터 출력을 갖는 알고리즘으로, 사람의 뇌를 구성하는 신경 세포 뉴런의 동작과 유사합니다. 뉴런이 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해 신호를 전달하는것처럼 퍼셉트론은 입력, 가중치, 활성화함수, 출력으로 구성됩니다. 아래 그림은 뉴런과 퍼셉트론을 나타냅니다. 퍼셉트론의 활성화함수는 입력과 가중치에 대하여 출력을 결정 짓는 중요한 역할을 합니다. 활성화함수에 대한 자세한 내용은 다음 포스팅을 참조해 주세요. 초기에 퍼셉트론은 AND, OR 연산을 풀어내어 주목 받았습니다..

AI/Deep Learning 2023.06.02

[Machine Learning] 비지도 학습 (Unsupervised Learning)

비지도 학습(unsupervised learning)은 라벨링이 되어 있지 않은 데이터를 이용하는 학습 방법입니다. 즉, 타겟 데이터 없이 피처(feature) 데이터만을 이용하여 모델을 학습시킵니다. 지도 학습(supervised learning)에서 데이터 분류를 말 그대로 분류라고 했지만, 비지도 학습에서 분류는 군집(clustering)이라고 부릅니다. 보통 군집보다는 클러스터링이란 단어로 많이 사용합니다. 클러스터링에는 여러 방법이 있지만 K-평균 클러스터링(K-means clustering)만 알아보도록 하겠습니다. K-평균 클러스터링은 N개의 데이터를 K개의 클러스터로 나누는 방법입니다. 자세히 말하면, 각 데이터 포인트와 각 그룹 평균 간의 거리를 계산한 후 가장 가까운 클러스터로 배정하는..

AI/Machine Learning 2023.06.02

[Machine Learning] 차원 축소

머신 러닝에 사용되는 데이터는 분명 우리가 얻고자 하는 결과에 중요한 부분과 중요하지 않은 부분이 있습니다. 여기서 중요하지 않은 부분을 노이즈(noise)라고 부르며, 이것을 제거하는 것이 중요합니다. 차원 축소(dimention reduction)는 노이즈 제거 방법 중 하나로, 많이 사용되고 있습니다. 실제로 경험에 의하면 이미지를 이용한 모델 설계 시 CNN(convolutional neural networks)보다 좋은 결과를 얻은 적도 있습니다. 차원 축소를 하는 이유는 차원의 저주(curse of dimentionality)를 해결할 수 있기 때문인데, 여기서 차원의 저주란 데이터의 차원이 커질수록 해당 차원을 표현하기 위한 데이터의 수가 기하급수적으로 커지는 것을 말합니다. 1차원의 데이터..

AI/Machine Learning 2023.06.01