인공지능

    [인공지능/딥러닝/AI] 합성곱 신경망 CNN(Convolutional Neural Network)

    CNN은 딥러닝을 적용하는 거의 모든 분야에서 사용이 되고 있습니다. 특히 이미지 인식 분야에서는 정확한 성능으로 인해 가장 많이 사용되고 있습니다. 일반 신경망 아키텍처와 CNN 아키텍처의 차이 2020/08/26 - [인공지능 AI] - [인공지능/AI]텐서플로를 이용한 MNIST 딥러닝학습 이전 게시글에서 공부했던 일반 신경망 아키텍처는 입력층,은닉층,출력층으로 이루어져 1. 입력데이터에 대해 2. 피드포워드를 수행하여 출력값 계산하고, 3. 정답T와 출력값을 비교하며 cross-entropy 손실함수 값을 구해서 4.최소가 될 때까지 오차역전파를 이용해 값을 최적화해갑니다. 하지만 합성곱 신경망 CNN 아키텍처는 위 일반신경망의 은닉층 부분이 1개 이상의 콘벌루션층(Convolutional Lay..

    Tensorflow(텐서플로우) 설치와 기초

    지금까지는 파이썬으로만 설계와 구현을 해왔는데요 합성곱신경망(CNN), 순환신경망(RNN)등의 동작 알고리즘은 복잡하고 코드도 방대하기 때문에 파이썬만으로는 무리가 있습니다. 따라서 텐서플로우의 기본을 알아보고 설치를 해보도록 하겠습니다. 텐서플로우는 구글에서 개발하고 공개한 딥러닝 프레임워크이고, C++ Java 등 많이 지원하지만 Python에 가장 최적화되어있다고 할 수 있습니다. 텐서플로우 설치 pip install tensorflow pip install 기능을 사용하여 쉽게 설치할 수 있습니다. 만약에 설치할 때 에러가 나는 경우 python -m pip install --upgrade pip pip버전을 업그레이드 한 후 pip install --ignore-installed --upgrad..

    [딥러닝/인공지능]MNIST(필기체 손글씨)

    딥러닝구조를 이용하여 MNIST, 즉 필기체손글씨를 인식할 수 있습니다. np.loadtxt()함수를 이용하여 트레이닝데이터행렬을 만들 수 있습니다. Train Data Set 과 Test Data Set 을 활용해보겠습니다. 학습데이터인 Train Data Set에는 총 6만개의 이미지데이터가 있습니다. 하나의 이미지는 28*28개로 총 784개의 숫자로 이루어져 있습니다. 위 Train Data Set 파일에서 처음 5라는 숫자는 정답 숫자에 대한 정보이고 그 이후로 784개의 숫자가 이미지를 나타내는 정보입니다. 픽셀 하나의 밝기값이라고 볼 수 있습니다. 0에 가까울수록 검은색이고 255에 가까울수록 밝은(흰)색입니다. 학습데이터에서는 하나의 이미지가 784개의 숫자를 가진 1차원 배열로 표현되지만..

    [딥러닝/인공지능]딥러닝기초_피드포워드/XOR문제해결

    신경망(NN) 개념 사람의 신경망을 구성하는 신경세포 뉴런은 각각의 입력 신호에 최적의 가중치를 곱한 모든 합이 어느 임계값(Threshold)에 도달해야만 다음 뉴런으로 출력신호를 보내는 구조다. 이처럼 입력 신호를 받아서 특정임계값을 넘어서야만 출력을 생성하는 함수를 활성화함수라고 한다. 딥러닝 기초 딥러닝은 입력층, 은닉층, 출력층을 구축한 다음, 출력층의 오차를 기반으로 오차가 가장 작아지도록 각 층 사이에 존재하는 가중치(W2,W3..),각 층의 바이어스(b2,b3...)값을 최적화하는 머신러닝의 한 분야다. 참고로 딥러닝 구조에서 은닉층을 더 사용할수록 결과의 정확도가 높아진다고한다. 은닉층을 깊게할수록 정확도가 높아진다고 하여 '딥'용어가 붙었다. 피드포워드(Feed Forward) 위의 그..

    [머신러닝/인공지능] 선형회귀_분류(Classification)

    분류(Classification) 이산적인 값 True False로 출력값을 내주는 Classification는 선형회귀의 한 타입이다. 시그모이드(Sigmoid)함수 Cross-entropy 연속값을 가지던 선형회귀의 손실함수와는 다른 (이산값을 가지는 선형회귀를 위한) 손실함수가 필요하다. 활성화 함수(Activation Function) Sigmoid와 같이 분류작업을 하는 함수에는 RelU, Tanh도 존재한다. 머신러닝에서 세 가지 모두 잘 쓰인다. 활성화함수는 비선형함수(non-linear function)으로 입력값에 대해 비선형적 대응(분류)를 한다. 그리고 임계값(threshold)(0.5,1값 등)을 기준으로 분류를 가능하게 한다. 분류(Classification) 예제 예제를 통해 분..

    [머신러닝/인공지능] 선형회귀 예제 _단일변수/다변수

    입력변수가 1개인 선형회귀 예제 앞서배운 회귀개념따라서 선형회귀를 구현하려면 y=Wx+b값을 구하고, 오차가 최소가 되는 W와 b를 구해야한다. 이를 실제로 구현할 때는 일반곱셈형식이 아니라 입력값x와 가중치W를 행렬로 변환후 y=W*x+b를 행렬곱으로 구한다. import numpy as np #트레이닝 데이터 준비.초기화 x_data=np.array([1,2,3,4,5]).reshape(5,1) y_data=np.array([2,3,4,5,6]).reshape(5,1) #임의의 W가중치, b바이어스 준비,초기화 W=np.random.rand(1,1) #0~1사이의 값으로 (1*1)행렬 생성 b=np.random.rand(1) #0~1사이의 값 #손실함수 LossFunction def loss_func..

    [머신러닝/인공지능]편미분(Partial Derivative)과 체인룰(Chain Rule)

    우리가 미분을 통해 얻을 수 있는 인사이트는 입력x를 현재값에서 아주 조금 변화시키면 f(x)는 얼마나 민감하게 반응하는지다. 편미분(Partial Derivative) 입력 변수가 2개 이상인 다변수 함수에서 미분하고자 하는 변수 1개를 제외한 나머지 변수들은 상수로 취급하고, 특정한 한 변수에 대해서만 미분하는 것. 편미분 활용: 체중(야식, 운동) 현재 먹는 야식의 양(현재변수)에서 조금 변화를 줄 경우 체중은 얼마나 변하는가? a체중 ------- a야식 현재 하고 있는 운동량에 조금 변화를 줄 경우 체중은 얼마나 변하는가? a체중 ------- a운동 체인룰(Chain Rule) 합성함수를 미분하기 위해 사용(합성함수란 여러 개의 함수로 구성된 함수) 합성함수를 미분할 때 분모와 분자에 동일한 ..

    [딥러닝/머신러닝]논리게이트 XOR문제(XOR problem)

    Logistic Regression(미분)을 이용했을때 (추후에 Logistic Regression 게시글도 게시예정) XOR 게이트를 구현이 불가능하다. AND, OR, NAND게이트는 1개의 분류 시스템만으로도 구현가능하지만 XOR게이트는 여러개의 분류시스템을 조합해서 구현해야한다. 그래서 미분을 사용했던 머신러닝이 아닌 (머신러닝의 다른 한 분야인) 딥러닝을 이용한다. 딥러닝의 핵심 아이디어가 여러 분류 시스템을 조합하여 데이터 특성과 상관관계를 분석하는 것이다. 기본적으로 우리가 알고 있는 AND OR NAND XOR게이트의 정답 데이터는 AND: 0001 OR:0111 NAND:1110 XOR:0110 이다. 입력데이터는 각각 ([0,0],[0,1],[1,0],[1,1])이다. (입력 데이터는 ..