본문 바로가기

머신러닝

기본 RNN과 LSTM 비교 【5】RNN 기본 다지기 / 실습으로 익히는 순환신경망 기본 RNN과 LSTM 비교 여기까지 RNN과 LSTM을 자세히 살펴 보았다. 두 순환신경망의 구조를 비교해보자. 아래 그림을 보자. 가장 간단하게 두 구조를 구별하는 방법은 타임스텝이 진행될때 한 셀에서 다음셀로 전달되는 정보의 개수를 확인하면 된다. 즉 위 그림에서는 셀과 셀 사이의 화살표 개수를 확인하면 되는것이다. 단기 기억 뿐인 RNN의 경우 다음 셀로 전달 되는 정보는 역시 바로 직전 타임스텝의 정보일 뿐이다. 그래서 그림에서 하나의 화살표만 볼 수 있다. 그러나 LSTM은 이름에서 보듯 Long-Short Term Momory 이므로 장기와 단기 기억이 모두 존재한다. 그러므로 구조 그림에서 두개의 화살표를 확인할 수 있다. 위 화살표는.. 더보기
예제로 다시 한번 이해하는 RNN 구조 【5】RNN 기본 다지기 / 순환 신경망의 출현 예제로 다시 한번 이해하는 RNN 구조 RNN을 실습해보자 import numpy as np from matplotlib import pyplot as plt from tensorflow.keras import datasets, layers, models 실습에 사용되는 패키지들이다. 텐서플로우 2.0은 선언하는 것은 생략하고 넘파이, 맷플롯립, 케라스 이렇게 사용된다. 이번에는 데이터셋을 호출하지 않고 만들어서 사용한다. data = np.sin( np.pi * np.arange(0, 100)* 2.025 ) + np.random.random(100) x = np.array([data[i+j] for i in range(len(data)-10) for j.. 더보기
YOLO (이론 + 실습) 【3】이미지 분류를 넘어, Object Detection 모델 / R-CNN 이론 + 실습 YOLO (이론 + 실습) YOLO는 현재 v3 모델까지 나온 상황이며 v3 코드를 다루겠다 !wget https://pjreddie.com/media/files/yolov3.weights YOLOv3를 사용하기에 앞서 가중치를 받아야 한다 import os import scipy.io import scipy.misc import numpy as np import pandas as pd import PIL import struct import cv2 from numpy import expand_dims import tensorflow as tf from skimage.transform import resize fr.. 더보기
이미지 분류하기 【2】CNN_합성곱 신경망 / 이미지 분류하기 이미지 분류하기 CNN으로 이미지를 분류해보자. try: %tensorflow_version 2.x except Exception: pass import tensorflow as tf #텐서플로우 2.x 실행 CNN을 돌리기에 앞서 텐서플로우(Tensorflow) 버전을 2.x으로 바꿔야 한다. 그래서 위에 코드를 실행하면 2.x로 바뀝니다. from tensorflow.keras import datasets, layers, models 모델을 작성하기에 앞서 keras 패키지를 호출한다. (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data() 이미지 분류에 사.. 더보기
컴퓨터에게 눈이 달렸다면 얼마나 좋을까? 【2】CNN_합성곱 신경망 / 컴퓨터 비전의 이해 컴퓨터에게 눈이 달렸다면 얼마나 좋을까? 컴퓨터 비전(Computer vision)은 인간의 시각(vision)을 컴퓨터가 가질 수 있도록 하는 인공지능의 한 분야이다. 사람이 눈을 통해 본 장면을 이해하고 정보를 얻는 것처럼 컴퓨터도 물체와 사람을 식별해서 관계를 파악하고 더 나아가 감정과 의도를 추측할 수 있도록 컴퓨터에게 ‘눈’을 달아 주는 것이다. 사람은 직관적으로 사진 속 사물과 그 관계를 파악하는 것이 가능하다. 그러나 이를 컴퓨터에게 가르치기란 결코 쉬운 일이 아니다. 그렇다면 컴퓨터에게 사람처럼 보는 법을 어떻게 알려 주려 했을까? 컴퓨터에게 눈을 달아주려는 아이디어에 맞게 초창기 컴퓨터 비전은 동물의 시각 정보 처리 방식을 모방하는 연구가.. 더보기
강화학습 (Reinforce Learning) 【1】Deep Learning 시작하기_머신러닝의 종류 강화학습 (Reinforce Learning) 강화학습은 앞서 소개한 세 종류의 학습과는 조금 다른 개념으로 컴퓨터의 동작이 적절한지에 대해 피드백이 있는 학습 방법을 말한다. 학습하는 컴퓨터를 에이전트라고 하며 에이전트가 어떠한 환경(environment) 안에서 하나의 행동(action)을 했을 때 옳다면 보상을(reward), 잘못되었다면 벌점(penalty)을 부여한다. 즉, 특정 환경에서 에이전트가 가장 많은 보상을 받기 위해 어떻게 행동해야 하는지 강조하는 것이다. 강화학습은 입력과 출력에 대한 데이터 쌍을 필요로 하지 않으며 차선의 행동도 허용하지 않는 특징이 있다. 강화학습에 대한 설명은 이 정도로 끝내겠다. 강화학습에 대해 자세히 알.. 더보기
반지도학습 (Semi-Supervised Learning) 【1】Deep Learning 시작하기_머신러닝의 종류 반지도학습 (Semi-Supervised Learning) 반지도 학습은 준지도 학습이라고도 불리며 위에서 다룬 지도학습과 비지도학습을 섞은 학습 방식이다. 그렇기 때문에 데이터의 형태 또한 일부는 지도학습의 데이터 형태를, 일부는 비지도학습의 데이터 형태를 취하고 있다. 즉 반지도 학습은 라벨 y가 있는 데이터와 없는 데이터를 모두 가진 데이터를 이용한다. 데이터의 형태에 맞게 학습 방식 또한 지도 학습과 비지도 학습의 조합으로 이루어져 있는데, 라벨이 없는 데이터를 그룹화 할 때 라벨이 존재하는 일부 데이터를 이용하는 방식이다. 작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com 더보기
비지도학습 (Unsupervised Learning) 【1】Deep Learning 시작하기_머신러닝의 종류 비지도학습 (Unsupervised Learning) 비지도 학습은 지도학습과 다르게 지도해줄 조력자의 도움 없이 컴퓨터 스스로 학습하는 형태를 말한다. 비지도 학습의 데이터는 x, y 가 존재하는 지도학습의 데이터에서 라벨 y 가 없는 형태이다. x 와 y의 관계를 파악했던 지도학습과는 달리 비지도 학습은 x들 간의 관계를 스스로 파악하는데 이는 학습에 사용된 데이터들의 특징을 분석해 그 특징별로 그룹을 나누는 것을 의미한다. 이를 통해 새로운 데이터를 입력 받으면 분류해 놓은 그룹 중 그 특징이 비슷한 그룹에 포함 시킨다. 간혹 비지도 학습과 지도학습의 분류를 혼동하는 경우가 있어 다음의 표를 보며 정리 해보자. 가장 두드러진 차이는 학습 데이터.. 더보기
지도학습 (Supervised Learning) 【1】Deep Learning 시작하기_머신러닝의 종류 지도학습 (Supervised Learning) 머신러닝의 종류는 다양한 기준으로 나눌 수 있는데 그중 학습하는 방식과 사용하는 데이터에 의해 다음의 4가지로 구분 가능하다. · 지도학습 · 비지도학습 · 반지도학습 · 강화학습 이렇게 분류가 가능한 것은 학습 목적이 달라 그로 인해 학습 방식에도 차이가 있기 때문이다. 학습 방식이 다르니 학습에 사용되는 데이터의 형태에도 차이가 있어 이러한 특징을 이용해 종류를 나눌 수 있는 것이다. 이제 지도학습부터 하나씩 다뤄보도록 하겠다. 여러분은 각 학습 마다 데이터, 방식, 목적이라는 세가지 키워드에 초점을 맞추어 따라오기 바란다. "지도학습(Supervised Learning)" 지도학습은 말그대로 학습.. 더보기
[머신러닝] 케라스로 RNN 순환 층 구현하기 (파이썬 코드) 1. 케라스의 순환 층(RNN) RNN은 Recurrent Neural NEtwork의 약자로, 시퀀스 모델인 순한 신경망을 의미합니다. 즉, RNN은 입력과 출력을 시퀀스 단위로 처리하는 모델인데요, RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로 보낼 때, 은닉층 노드의 다음 계산 입력으로도 결과값을 보낸다는 특징을 갖고 있습니다. 한편, 케라스로 이러한 순환 층을 구현할 수 있는데요, SimpleRNN 라이브러리를 이용하여 구현할 수 있습니다. SimpleRNN은 케라스에 있는 모든 순환 층과 동일하게 두 가지 모드로 실행할 수 있는데요, 전체 시퀀스를 반환하거나 입력 시퀀스에 대한 마지막 출력만 반환할 수 있습니다. 그렇다면, 간단한 RNN 모델을 만들어보겠습니다. f.. 더보기