인공지능(AI)

Deep Learning (딥러닝)

sysman 2020. 11. 3. 13:48

AI(인공지능) : 학습, 문제 해결, 패턴 인식 등을 인지 문제를 해결하는 융합된 공학분야

                  1943년에 처음 나옴.

                  Deep Mind : 12명 인공지능 전문가로 구성된 회사를  2014년 1월 구글에서 인수

 

* 심볼릭 AI(rule based AI) -1950년 ~ 1980년

 - 프로그래머에 의해 명시적인 규칙만으로 문제를 해결 하는 접근 방식

 - 잘 정의된 논리적인 문제 해결에 적합

    (규칙, 데이터)-> 심볼릭AI -> 정답

 - 한계 : 문제 더 복잡하고 불분명, 무한대의 규칙 등

    쟁점 :컴퓨터가 스스로 처리 가능? 컴퓨터 스스로 데이터를 보고 규칙을 학습가능한가?

 

* 머신러닝(Machine Learning) : 수많은 데이터로부터 기계가 배운다.(1959)

                 컴퓨터가 명시적인 프로그램이나 규칙 없이도, 스스로 학습 할 수 있도록 하는 연구 분야

 

* 딥러닝 

 - 인공신경망(1943) : 생물의 뇌를 그대로 모델링 할 수 있다는 아이디어 시작

                            복잡한 스위치들이 연결된 네트워크로 표현할 수 있다고 제한

- 인공지능용어(1956) : 지능이 있는 기계를 만들기 위한 과학과 공학

 - 퍼셉트론(1957) :  노의 기본 단위인 뉴런을 모방

                          입력신호에 따라 0,1값을 출력

                          선형분류기(y=ax+b)

 

- 사람의 뇌 : 뉴런들의 다층 연결

  인공신경망 : 퍼셉트론의 다층 연결

- 딥러닝 : 인공ㅇ신경망을 많은 층으로 깊게 쌓은 모델이 DNN(Deep nural networking)

 

* 퍼셉트론과 선형분류 문제

 - 퍼셉트론 수학식 : 일종의 y=ax+b수식으로 모델링 된 선형 분류기

 - 선형분류 데이터를 가장 잘 설명할 수 있는 선을 찾는 방법 y=wx+b(가중치: Weight, 편향:bias)

 

* 퍼셉트론과 선형분류 문제

 

퍼셉트론으로 AND 및 OR 논리연산 구현 가능 y=ax+b

 

퍼셉트론으로 XOR논리연산 구현가능한가? - 퍼셉트론 1개로는 불가능

* 딥러닝 빙하기 (1969) - 단층 퍼셉트론으로 XOR문제 해결안되는 불가능을 증명하게 됨.

  다층 퍼셉트론으로 해결 가능할까?  = 수많은 가중치값과 편향값을 찾을 수 있는 적절한 방법이 없었음

 

* 오차역전파 법(backpropagation) : 단층 및 다층 퍼셉트론의 단점(최적의 weight와 bias)을 해결함.

   - 1974년 역전파법 고안했으나 관심 받지 못함

   - 1986년 Geoffrey hinton 교수가 다층 퍼셉트론의 학습에 적용, 다층 퍼셉트론을 이용해 XOR문제를 학습할 수 있음을 보임

 

 

* 단점  : 시간 및 비용 많이 듬, 초기값 근거가 없었고

 네트워크의 깊이가 깊어 질 수로 학습이 잘 되지 않음 (vanishing gradient)

* 딥러닝 두번째 빙하기 

- 기술 수준에 대한 사람들의 높은 기대치

- 학습데이터 양의 부족 (인공신경망은 학습 데이터의 양이 성능을 좌우)

- 하둡, 빅데이터 등 빅데이터 처리하기 위한 오픈소스기술 부족

- 인공신경망의 학습을 위해 많은 연산 필요, 그러나 옛날에는 컴퓨팅 성능이 낮았음.

 

*딥러닝 부활(2010)

 - 데이터가 폭발적으로 늘어남

 - GPU등 컴퓨팅 파워의 고속화

 - 딥러닝 알고리즘 발전

 - vanishing gradient 문제의 해결책 발견(relu, batch)

 - 경사하강법 등 최적화 알고리즘 발견

   

* 딥러닝 핵심개념

 - 인공신경망, 인공신경망 내 데이터 흐름, 깊은층(deep layer), 비선형성(non-linearity), 최적화(optimization), 딥러닝 모델의 공간적 의미

 

* 인공신경망 flow : 문제->모델 구성->모델 학습->문제해결

 

* 인공신경망 (Neural Network)

 - 퍼셉트론 : 인공신경망을 이루는 가장 중요한 기본 단위

                 입력값을 받아서 활성화 함수를 사용해 출력값을ㄹ다음으로 전달함

예를들면, 출근시간과 거리(입력값x)가 weight가 가장 강하게 형성될 것

 

전처리 : NaN등 결측치 빠져 있는값을 제외함. outlyer 는 뺴야함 따로 나와 있는것

          이미지 경우, 밝기 사이즈 등 이미지를 데이터 가공쉽게 미리 처리하는 과정

          음성 데이터는 볼륨 맞춘다는가? 파일의 길이도 동일하게 맞춤

          자연어는 오타 체크, 문법체크 등 처리

         

 

*데이터 ->feature engineering -> 머신러닝 알고리즘->결과

 데이터 -> 딥러닝 알고리즘->결과

 

* feature engineering (엄청난 시간이 소요) -> 그래서 딥러닝 알고리즘 사용

- 사진을 흑백으로 바꾸고 픽셀을 계속 축약

- 트랜드예측 데이터에 영향주는 것들만 골라서 인풋에 넣음 ( 구매이력, 집위치, 후기등) 몇가지만 인풋을 넣음.

 

*뉴런(perceptron)

 - 가중치w : 입력신호가 결과에 주는 영향력(중요도)르 조절하느 변수

 - 편향b ㅣ: 퍼셉트론이 얼마나 쉽게 활성화 하느냐를 조정하는 변수

 - 활성화 함수f(x) : 입력 신호의 총합을 확인해 출력 신호를 결정하는 함수

 

* 단일 뉴런을 여러층으로 쌓아서 만든 모델

 

*step 활성화 함수

퍼셉트론 초청가 알고리즘 step 함수 형태

x값이 0보다크면 1dkslaus 0을출력

 

* sigmoid 함수

0과1사이 값을 s자 형태 그래프

회귀를 사용하여 데이터가 어떤범주에 속할 확률을 0에서1사이 값을 예측

0/1, 합격/불합격 이중 분류문제에 적합

* relu함수(가장많이 사용하는 활성화 함수)

rectfied linear unit 약자

기존의 linear함수인 sigmoid 를 개선함

 

* 분류 분석

 - 활성화 함수로 소프트맥스 함수 사용

 - 분류하고자 하는 카테로리 개수 만큼 output layer에 퍼셉트론 배치 

 

* 현업에서 분류가 많아지면 성능에 문제가 있어 softmax 사용안하고 출력값중 가장 큰값을 사용하기도 함.

* 이진분류(예: 찬성/반대, 0/1) - output에서 sigmoid 사용

 

딥러닝 특징

* Deep layer(깊은층) 

 - 층을 깊게 할 수록 더 복잡한 문제에 대해서 대응 가능

 - 이전층에서 학습한 특징을 조합하여 더 높은 차원의 문제에 대응

 

* 비선형성(non-linearity)

 - 선형함수(y-ax+b)는 여러번 연산해도 선형성 갖음

- 비선형성을 추가하면 여러번 연산 시 더 복잡한 문제를 해결

- activation 함수가 비선형성을 준다.

 

활성함수의 결과에 활성함수를 이용하여 비선형성을 혹보

활성함수 : step function, sigmoid, relu, than 등

 

최적화

*효율적인 학습위해 필요한것?

 - 손실함수 : 딥러닝 모델 학습 시 학습 지표가 되는 함수

                  모델의 추론 결과와 실제 정답간의 차이를 의미하는 함수

                  목적함수, 비용함수라고도 부름

미분을 이용한 기울기의 계산

미분을 이용하여 복잡한 연산에 대한 기울기를 계산할 수 있음

경사하강법

기울기 사용하여 가중치, 편향 값을 업데이트하는 최적화 알고리즘

오차역천파을 통해 게산한 미분값을이용

기울기를 방향 삼아 0으로 줄어는 loss의 최소값 w를 찾음

 

backpropagation으로 최적화 : k번째 오차역전파 오차율을 0에 가까울때까지 계속 학습함. w,b를 계속 업데이트함.

역전파를 계속 학습할 수록 오차율이 감소함

 

'인공지능(AI)' 카테고리의 다른 글

강화학습, GAN  (0) 2020.11.03
RNN(Recurrent Neural network), LSTM  (0) 2020.11.03
classifier model- 앙상블  (0) 2020.11.03
Supervised - Softmax Regression  (0) 2020.10.21
epochs, batch size, iteration  (0) 2020.10.20