Deep Learning/Fundamentals 24

[RL1] 강화학습(Reinforcement Learning)이란?

강화학습(Reinforcement Learning) 강화학습이란? 강화(Reinforcement)는 시행착오(Trial and Error)를 통해 학습하는 방법 중 하나를 의미합니다. 이러한 강화를 바탕으로 강화학습은 실수와 보상을 통해 학습을 하여 목표를 찾아가는 알고리즘입니다. 기존의 신경망들이 라벨(정답)이 있는 데이터를 통해서 가중치와 편향을 학습하는 것과 비슷하게 보상(Reward)이라는 개념을 사용하여 가중치와 편향을 학습하는 것입니다. 목적은 최적의 행동양식 또는 정책을 학습하는 것입니다. 종류 Model-Based Algorithm 해당 알고리즘은 환경(Environment)에 대한 모든 설명(Description)을 알고 문제를 푸는 방법입니다. 핵심은 직접 행동을 하지 않고, 최적의 솔..

RNN(Recurrent Neural Network), LSTM, GRU

순환 신경망(RNN) 순환 신경망(Recurrent Neural Network)은 은닉 계층 안에 하나 이상의 순환 계층을 갖는 신경망을 의미합니다. 순환 신경망은 다른 네트워크들과 입력을 받는 방식에서 다릅니다. 순서가 있는 데이터에 주로 사용되며, 해당 데이터를 입력으로, 하나의 네트워크를 통해서 순서대로 출력을 얻습니다. 순서가 있는 데이터는 소리, 언어, 날씨, 주가 등의 데이터처럼 시간의 변화에 함께 변화하면서 그 영향을 받는 데이터를 의미합니다. 순환 계층 시계열 데이터 처리에 알맞게 고안된 퍼셉트론 계층입니다. 가중치와 편향을 각 시간대 데이터에 반복해서 사용합니다. 순환 벡터를 사용하여 정보를 전달합니다. RNN의 구조 RNN은 되먹임 구조를 가지고 있습니다. 레이어의 출력을 다시 입력으로..

CNN (Convolutional Neural Network)

컨볼루션 신경망(Convolutional Neural Network) CNN(Convolutional Neural Network)은 주로 이미지를 사용한 딥러닝 네트워크 방식에서 사용됩니다. 사실, 이미지 외에 음성과 텍스트, 시간 데이터에도 사용 가능합니다. CNN의 구성 분류를 위한 컨볼루션 신경망은 특징 추출을 하는 부분과 분류기 부분으로 나누어집니다. 특징 추출(Feature Extraction) 컨볼루션 레이어(Convolution Layer) + 풀링 레이어(Pooling Layer)를 반복하여 구성 CNN의 주요한 성질 중 하나는 특징표현 학습(Feature Representation Learning)입니다. 특징 추출 기법인 컨볼루션(Convolution, 합성곱) 연산을 사용하여 이미지의..

분류(Classification) 네트워크

딥러닝 네트워크를 이용한 분류 분류(Classification)는 회귀(Regression)와 함께 가장 기초적인 분석 방법입니다. 데이터가 어느 범주(Category)에 속하는지를 판단하는 방법입니다. 이항 분류(Binary Classification) 2개의 Label을 갖는 데이터가 들어왔을 때, 0 또는 1로 분류를 하는 것을 의미합니다. 활성화 함수는 주로 Sigmoid 함수를 사용합니다. Sigmoid 함수가 0 또는 1로 출력을 하기 때문입니다. Sigmoid 대신 Softmax를 사용하는 것이 가능합니다. 이항 분류 예제 Dataset https://www.kaggle.com/uciml/mushroom-classification 독버섯과 일반 버섯의 데이터세트입니다. class라는 항목을 ..

회귀(Regression) 네트워크 만들기

딥러닝 네트워크를 이용한 회귀 Squential 모델과 Dense 레이어를 사용한 간단한 네트워크를 형성하여 회귀 네트워크를 만들어보겠습니다. 앞선 포스팅에서 만든 XOR 연산 네트워크 또한 회귀 네트워크의 하나라고 할 수 있습니다. 일반적인 회귀 방법 일반적으로 numpy, tensorflow, sklearn 라이브러리를 사용한 회귀 방법이 있습니다. 이것은 머신러닝 (7) 포스팅에 정리하였습니다. Test 환경 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt x = 2 * np.random.rand(100, 1) y = 4 + 3 * x + np.random.randn(100, 1) x값의 범위는 0부터 2의 범위의..

AND, OR, XOR 연산 신경망 만들기

간단한 신경망 네트워크 만들기 실습 예제 이번 포스팅에서도 지난번 사용했던, sigmoid를 사용하겠습니다. import numpy as np def sigmoid(x): return 1/(1+np.exp(-x)) AND 연산 네트워크 AND연산은 프로그래밍 언어를 배울 때 한번 씩은 들어본 연산이라고 생각합니다. 아래와 같은 연산을 뜻합니다. 항상 참일 때만, 참을 결과로 출력하는 연산입니다. 이것을 numpy 배열로 나타내면 아래와 같이 선언합니다. x = np.array([[1, 1], [1, 0], [0, 1], [0, 0]]) y = np.array([[1], [0], [0], [0]]) 또한 가중치와 편향도 정규 분포를 가지는 난수로 초기화 해줍니다. 또한, 학습률은 0.1로 설정하였습니다. ..

텐서플로우 2.0 기초와 뉴런 만들기

텐서플로우란? 텐서플로우(Tensorflow)는 머신러닝을 위한 오픈소스 플랫폼으로, 딥러닝 과제를 수행하기위해 제공하는 라이브러리입니다. ML 모델을 개발하고 학습시키는 데 도움이 되는 핵심적인 오픈소스 라이브러리입니다. 현 시점 기준(20/02/06)으로, 세계에서 가장 많이 사용되는 딥러닝 프레임워크입니다. 구글에서 주도적으로 개발하는 플랫폼이며, 구글 코랩(Colab)을 이용하여 주피터 노트북기반 딥러닝 코드를 사용가능합니다. 2.0버전에서는 기존의 1버전보다 성능과 편의성을 확보하였습니다. API를 간소화하였고, 즉시 실행 모드(Eager Execution)을 기본값으로 사용합니다. 또한 기존 1버전에서 사용하던 session대신, function을 사용하여 그래프 연산이 가능하도록 수정하였습니..

Object-Detection 정리(History)

이미지 내에서 사물을 인식하는 방법에는 다양한 유형이 존재합니다. 그중 Object Detection에 대해 정리를 하려고 합니다. 먼저 내용은 개인적인 경험을 바탕으로 한 매우 주관적인 내용이라는 점을 미리 말씀드립니다. 저는 사실 Object Detection을 처음 접한 것은 2018년이라고 해야 할 것 같습니다. 이미지에서 내가 원하는 영역만 찾으면 좋겠다는 생각은 했지만, Public Dataset이 아닌 내가 원하는 Object를 기준으로 Dataset을 만들고 학습시키는 과정이 처음에는 쉽지 않았습니다. 처음에 R-CNN을 이용하여 개발해보고 "이 결과가 잘 나온 것인가?"라는 의문도 들었던 때도 있었고, YOLO를 개발하기 위해 Darknet Framwork를 설치하고 환경설정을 하면서 꽤..

[머신러닝] 머신러닝, 딥러닝 Feature/Attribute , Class 뜻. (feat. Feature selection 이 필요한 이유)

이번에는 저번 포스팅에 이어서 머신러닝에서 중요한 용어인 feature에 대해서 생각해 볼것이다. feature는 한국어로 특징이라고도 해석이되는데, 학습 및 예측을 할 데이터의 특징, 항목 들을 의미한다. (머신러닝에서, Feature와 Attribute는 같은 용어로 이용된다.) 예를들어서 사람의 정보를 이용해서 이사람이 질병에 걸렸는지 건강한지 유무를 예측한다고 생각해보자. 여기서 사람의 정보란 무엇인가? 이는 우리가 어떤 자료를 모으냐에 따라 달라 질 수 있는데, 이는 개인의 키, 몸무게, 성별, 혈압, 나이, 식습관 등이 될 수 있다. 이러한 항목들이 feature라고 부른다. 개인의 키는 feature1 몸무게는 feature2 성별은 feature3 가 될 수 있는 것이다. 아래의 표를 보자..