순전파(Feedforward) 역전파(Backpropagation) 개념

 

다층 퍼셉트론(Multi-layer Perceptron, MLP)으로 학습 한다는 것은 최종 출력값과 실제값의 오차가 최소화 되도록 가중치와 바이어스를 계산하여 결정하는 것이다. 순전파 (Feedforward) 알고리즘 에서 발생한 오차를 줄이기 위해 새로운 가중치를 업데이트하고, 새로운 가중치로 다시 학습하는 과정을 역전파 (Backpropagation) 알고리즘 이라고 한다. 이러한 역전파 학습을 오차가0 가까워 때까지 반복한다. 역전파 알고리즘을 실행할때 가중치를 결정하는 방법에서는 경사하강법이 사용된다.

 

[순전파 (Feedfoward)]

입력층에서 은닉층 방향으로 이동하면서 입력에 해당하는 가중치가 곱해지고, 결과적으로 가중치 합으로 계산되어 은닉층 뉴런의 함수 (일반적으로 시그모이드(Sigmoid) 사용) 입력된다. 그리고 최종 결과가 출력된다.

 

 

[역전파 (Backpropagation)]

역전파 알고리즘은 input output 값을 알고 있는 상태에서 신경망을 학습 시키는 방법이다. 방법을 Supervised learning(지도학습)이라고 한다. 초기 가중치, weight 값은 랜덤으로 주어지고 각각 노드들은 하나의 퍼셉트론으로, 노드를 지날때 마다 활성함수를 적용한다.

 

역전파 알고리즘의 수식은 아래와 같다.

·       target : 출력의 기대

·       output : 실제 출력

·       E : 오차

 

 

역전파 알고리즘도 한계점은 있다. 은닉층에서 시그모이드(Sigmoid) 함수를 사용하면 가중치 조정을 위해 경사감소법을 사용하는데, 계단형식 함수를 미분가능하도록 곡선화 한다. 은닉층이 깊어질 수록 가중치가 0으로 수렴하며 정확성이 감소한다. 이러한 역전파 알고리즘의 문제점을 해결하기 위해 ReLu 알고리즘을 사용한다. ReLu x 값이 0이하이면 0 출력, 0 이상이면 비례함수를 적용하여 max(0,x) 함수를 사용한다.

 

 

[참고자료]

·       https://wikidocs.net/37406

·       https://ko.wikipedia.org/wiki/%EC%97%AD%EC%A0%84%ED%8C%8C

·       https://sacko.tistory.com/19

·       https://m.blog.naver.com/samsjang/221033626685

·       https://goofcode.github.io/back-propagation

·       https://gomguard.tistory.com/182

 

 

 

2020-03-14/ Sungwook Kang / http://sungwookkang.com

 

 

인공지능,  Artificial Intelligence, 머신러닝, Machine Learning, 딥러닝, Deep Learning,다층 퍼셉트론, Multi-layer perceptron, 역전파, 순전파 , Backpropagation, Feedforward

다층 퍼셉트론 (Multi-layer Perceptron)

 

퍼셉트론은 사람 뇌의 단일 뉴런이 작동하는 방법을 흉내내기 위해 환원 접근법 (reductionist approach) 이용한다. 방법은 초기 가중치를 임의의 값으로 정의하고 예측값의 활성 함수 리턴값과 실제 결과값의 활성 함수 리턴값이 동일하게 나올 때까지 가중치의 값을 계속 수정하는 방법이다.

 

단층 퍼셉트론의 경우 AND, NAND, OR 논리회로를 계산할 있지만 XOR 게이트 연산을 없다. XOR 게이트는 베타적 논리합 이라 불리는 회로이다. 뜻은 한쪽이 1 때만 1 출력한다

퍼셉트론 이론은 선형 분류이다. 직선을 이용한 분류는 가능하지만 XOR 게이트와 같은 경우 곡선으로 나눌 있기 때문에 비선형 분류이다.

 

이러한 제약사항을 보완하기 위해 나온것이 다층 퍼셉트론 (Multi-layer Perceptron, MLP)이다. 단층 퍼셉트론과 다층 퍼셉트론의 차이점은 단층 퍼셉트론은 입력층과 출력층만 존재하지만, 다층 퍼셉트론은 중간에 층을 추가하였다. 이렇게 입력과 출력 사이에 추가된 층을 은닉층(hidden layer)이라 한다. XOR 게이트는 기존의 AND, NAND, OR 게이트를 조합하여 만들 있기 때문에 퍼셉트론에서 층을 계속 추가하면서 만들 있다. 이렇게 층을 여러겹으로 쌓아가면 선형 분류만으로 풀지 못했던 문제를 비선형적으로 있게 된다.

 

 

다층 퍼셉트론은 은닉층이 1 이상인 퍼셉트론을 의미한다. 은닉층이 2개일수도 있고 수십, 수백개 일수도 있다. 아래 그림과 같이 은닉층이 2 이상인 신경망을 심층 신경망 (Deep Neural Network, DNN)이라고 한다.  학습을 시키는 신경망이 심층 신경망일경우 심층 신경망을 학습시칸다고 하여 딥러밍(Deep Learning)이라고 한다.

 

 

 

[참고자료]

·       https://en.wikipedia.org/wiki/Multilayer_perceptron

·       https://wikidocs.net/24958

 

2020-03-12/ Sungwook Kang / http://sungwookkang.com

 

 

인공지능,  Artificial Intelligence, 머신러닝, Machine Learning, 딥러닝, Deep Learning,신경망, 뉴럴 네트워크,퍼셉트론, Perceptron, 다층 퍼셉트론, Multi-layer perceptron

단층 퍼셉트론 (Single-layer Perceptron)

 

퍼셉트론 (Perceptron) 1957 코넬 항공 연구소에 근무하던 프랑크 로젠블라트(Frank Rosenblatt) MCP 뉴런 모델을 기초로 퍼셉트론이라는 알고리즘을 고안하였다. 퍼셉트론은 하나의 MCP 뉴런이 출력신호를 발생할지 안할지 결정하기 위해 MCP 뉴런으로 들어오는 입력값에 곱해지는 가중치 값을 자동적으로 학습하도록 모델이며 입력 벡터를 부류(class) 구분하는 선형 분류기 이다. 퍼셉트론은 신경망(딥러닝) 기원이 알고리즘이다.

 

퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력한다. 여기서 말하는 신호는 전류처럼 흐름이 있는것을 뜻하며, 흐름의 상태 정보를 앞으로 전달한다. 아래 그림은 x1, x2라는 입력 신호에 w1, w2라는 가중치를 부여하여 y라는 신호를 출력한다.

 

 

 

입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1 출력하게 된다. 이를 뉴런이 활성화 한다라고 표현 있다. 한계를  임계값이라고 한다. 임계값은 보통 θ(세타) 표현된다. 퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여하게 된다. 가중치는 신호가 결과에 주는 영향력을 조절하는 요소로 작용된다. , 가중치가 클수록 해당 신호가 그만큼 중요하다는 뜻이다.

 

 

그림에서 x 입력 벡터 값을 나타내며, w 가중치를 나타낸다. 바이어스 입력값은 x0, 바이어스 기울기는  w0 표기했으며 f 활성홤수를 나타낸다.

 

·       임계치(threshold): 어떠한 값이 활성화되기 위한 최소값

·       가중치(weight): 선형 경계의 방향성 또는 형태를 나타내는

·       바이어스(bias): 선형 경계의 절편을 나타내는 값으로써, 직선의 경우는 y절편으로 표시

·       net: 입력값과 가중치의 곱을 모두 합한

·       활성홤수(activation function): 뉴런에서 계산된 net값이 임계치보다 크면 1 출력하고, 임계치보다 작은 경우에는 0 출력하는 함수

·       뉴런(neuron): 인공신경망을 구성하는 가장 작은 요소로써, net값에 따라 활성(1) 비활성(0) 출력

 

아래 그림은 많은 훈련 데이터가 추가됨에 따라 선형 경계를 업데이트하는 퍼셉트론을 보여주는 다이어그램이다.

 

 

퍼셉트론으로는 AND, NAND, OR 게이트의 논리회로를 표현할 있다.

[AND 게이트]

AND 게이트는 입력이 둘이고 출력이 하나인 대표적인 퍼셉트론 예시이다.  입력값이 모두 1일때 1 출력한다.

 

예를들어 (w1, w2, θ) 값을 (0.5, 0.5, 0.8)이라고 가정하였을때 계산이다.

·       (0*0.5) + (0*0.5) = 0.0         <  0.8        -> 0

·       (0*0.5) + (1*0.5) = 0.5        <  0.8        -> 0

·       (0*0.5) + (0*0.5) = 0.5        <  0.8        -> 0

·       (1*0.5) + (1*0.5) = 1.0         >  0.8        -> 1

 

[NAND 게이트]

AND게이트에 NOT 연산을 한것으로, AND 게이트 결과값의 반대이다.

 

 

[OR 게이트]

입력 신호중 하나 이상이 1이면 1 출력된다.

 

[단층 퍼셉트론의 한계]

단층 퍼셉트론은 AND, NAND, OR 논리회로를 계산할 있지만 XOR 게이트 연산을 없다. XOR 게이트는 베타적 논리합 이라 불리는 회로이다. 뜻은 한쪽이 1 때만 1 출력한다.

퍼셉트론 이론은 선형 분류이다. 직선을 이용한 분류는 가능하지만 XOR 게이트와 같은 경우 곡선으로 나눌 있기 때문에 비선형 분류이다. 이러한 제약사항을 보완하기 위해 나온것이 다중 (Multi-layer Perceptron)이다.

 

 

 

[참고자료]

·       https://en.wikipedia.org/wiki/Perceptron

·       https://untitledtblog.tistory.com/27

·       https://eehoeskrap.tistory.com/137

·       https://excelsior-cjh.tistory.com/169

 

 

2020-03-11/ Sungwook Kang / http://sungwookkang.com

 

 

인공지능,  Artificial Intelligence, 머신러닝, Machine Learning, 딥러닝, Deep Learning, AI, 신경망, 뉴럴 네트워크, 강화학습, 지도학습, 자율학습, Supervised Learning, Unsupervised Learning, Reinforcement Learning, 퍼셉트론, Perceptron, 단층 퍼셉트론, Single-layer perceptron

[Review] 2020-03-10 알고리즘 스터디 – 12 Week Challenge

 

SQL AngelesLA 한인 IT 커뮤니티 그룹으로 다양한 IT 기술을 공부하며 회원들의 소통을 공유 합니다. 현재 다양한 스터디를 운영하고 있으며 각종 공지를 위한 포럼, 그룹채팅을 운영하고 있습니다. 커뮤니티는 회원제로 운영되고 있으며 참여의 제한은 없습니다. 스터디 참여를 원하시거나 교류를 원하시는 분은 아래 홈페이지에서 상세 내용을 확인할 수 있습니다.

·         문의메일 : Leo.Sungwook.Kang@gmail.com

·         KAKAO : SQLMVP

·          SQL Angeles 공식 홈페이지 : http://SQLAngeles.com

·          공식 Facebook 그룹 : https://www.facebook.com/groups/SQLAngeles/

 

오늘은 SQL Angeles에서 준비한 12주 프로젝트로, 온라인 알고리즘 스터디의 9주차를 진행하였습니다. SQL Angeles의 온라인 미팅은 최대 100명이 참여할 수 있으며 상시 스터디원을 모집하고 있습니다.

 

온라인 미팅은 PC 뿐만 아니라, 태블릿, 스마트폰에서도 참여가 가능하기 때문에 앞으로도 많은 참여 부탁 드립니다.

 

2주차 스터디 주제는 Selection Sort로 진행 하였습니다.

·          Week 1: Introduction to algorithms (1/7/2020)

·          Week 2: Selection sort (1/14/2020)

·          Week 3: Recursion (1/21/2020)

·          Week 4: Quicksort (1/28/2020)

·          Week 5: Hash tables (2/4/2020)

·          Week 6: Breadth-first search (2/11/2020)

·          Week 7: Dijkstra's algorithm (2/18/2020)

·          Week 8: Greedy algorithms (3/3/2020)

·          Week 9-10: Dynamic programming (3/10/2020)

·          Week 11: K-nearest neighbors

·          Week 12: Basic codding interview skills

 

 

오늘의 주제는 Dynamic Programming 입니다. 동적 계획법(動的計劃法, dynamic programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. 동적 계획법의 원리는 매우 간단하다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것이다. 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있다. 특히 이 방법은 하위 문제의 수가 기하급수적으로 증가할 때 유용하다.

(출처 : https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EA%B3%84%ED%9A%8D%EB%B2%95)

 

 

 

 

스터디 내용은 NDA이며 저희는 취업을 보장하지는 않습니다.

 

 

오늘은 9주차 입니다. 이제 정말 끝이 얼마 남지 않았습니다.

 

 

이번 챕터에서 다루게 될 내용입니다.

 

 

어떻게 하면 가장 효율적(최대한 많이)으로 바구니에 담을 수 있을까 하는 문제로 (실제로는 도둑 물건을 훔칠 때 어떤 조합이 가장 이득이 되는지 구하는 문제) 수식에 의한 계산된 값을 표에 넣어 봄으로써 최적의 값을 찾아보았습니다.

 

Memoization은 기록하면 문제를 푸는 방식으로 이전 값을 가지고 있기 때문에 계속해서 반복적인 재계산을 하지 않아도 빠르게 결과를 도출할 수 있습니다. 실제 마지막 실습에서 엄청난 시간 차이를 경험할 수 있었습니다.

 

 

이론의 마지막은 실습입니다. 파이썬 코드를 활용하여 얼마나 빠르게 결과를 만들어 낼 수 있는지 확인하였습니다.

 

 

 

 

다음 스터디에도 항상 발전하는 스터디가 되기를 기대하면서 오늘 하루도 고생 많으셨습니다.

 

2020-03-10 / http://sqlangeles.com

 

 

LA 한인 SQL 스터디 모임, LA IT 모임, OC IT 모임, SQL 스터디, 개발 스터디, SQL Angeles, IT 커뮤니티, OC IT 커뮤니티, 알고리즘 스터디, 온라인 스터디

 

+ Recent posts