일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 패스트캠퍼스후기
- MBTI성격유형
- 파이썬문법
- 노르웨이기준금리
- 파이썬기초
- 미국디리스킹
- 파이썬배우기
- 비트코인
- 광교카페
- MBTI성격검사
- 셀레니움
- 중국수출통제
- MBTI
- 파이썬 인강
- 파이썬강의후기
- 스위스기준금리
- 파이썬독학하기
- SQL
- 비전공자파이썬
- 암호화폐
- 파이썬독학
- 스크래핑
- 파이썬수업
- 파이썬강의
- swift문법
- 파이썬온라인수업
- 파이썬클래스
- 패스트캠퍼스수강후기
- 파이썬인강
- 순천여행
- Today
- Total
이제 데이터 공부 안하는 블로그
인공신경망(Artificial Neural Networks) 과 퍼셉트론(Perceptron) 본문
* 제가 공부하기 위해 만든 자료입니다. 혹시 틀린 부분이 있다면 댓글로 알려주시면 수정하겠습니다.
신경망(Neural Networks)
생물학의 신경망에서 영감을 얻어서 만든 통계학적 학습 알고리즘입니다. 인간 뇌의 뉴런이 신경 말단에서 자극을 받으면 시냅스에서 화학 물질이 나와 전위 변화를 일으키고, 전위가 임계값을 넘으면 다음 뉴런으로 신호를 전달하는 매커니즘과 비슷합니다. 인공신경망은 시냅스의 결합으로 네트워크를 형성한 인공 뉴런이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 가리킵니다.
퍼셉트론 : 신경망을 이루는 가장 기본 단위
- 신경망(딥러닝)의 기원이 되는 알고리즘
- 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력한다.
- 입력 값과 활성화 함수를 사용해 출력값을 넘긴다.
- 단순한 형태의 선형분류기
- 전류가 전선을 타고 이동하듯이 퍼셉트론은 데이터와 가중치들이 연산의 흐름을 만들어서 정보를 옆으로 전달시킨다.
- 가충치는 전류에서 말하는 저항과 비슷한 개념인데, 다만 퍼셉트론에서는 가충치가 클수록 강한 신호를 흘려보낸다.
- 위 그림에서 '원'으로 표현된 것을 뉴런 or 노드(node)라고 합니다.
- 노드는 입력신호(x0, x1, ...)를 받아 각각 고유한 가중치(화살표=weights, w0, w1, ...)를 곱해 모두 더하는 연산(선형결합)을 하고 활성화 함수에 넣어 그 결과 값을 출력합니다.
퍼셉트론의 한계
- 퍼셉트론의 한계를 보여준 문제가 바로 XOR문제입니다. 디지털 논리회로를 이용해서 퍼셉트론의 문제를 살펴보았을 때 퍼셉트론으로는 입력값이 둘 중 하나만 1일 때 1이 출력되는 XOR 게이트를 풀 수 없습니다. 10여 년이 지난 후에야 이 문제가 해결되는데, 이것을 해결한 개념이 바로 다층 퍼셉트론입니다.
신경망 층(layer) 구성
- 신경망은 여러 층(layer)으로 구성 되는데 기본적으로 입력층(input layers), 은닉층(hidden layers), 출력층(output layers) 으로 나뉜다.
입력층(Input Layers)
신경망의 제일 앞부분에 있는 층으로 값을 입력 받는다. 노드 갯수는 입력 데이터 크기와 같게 설정된다. 보통 어떤 계산도 수행하지 않고 값들을 전달한다. 그래서 신경망의 층수(depth)를 셀 때 입력층은 포함하지 않는다.
은닉층(Hidden Layers)
인풋레이어와 아웃풋레이어만으로 이루어진 신경망으로는 복잡한 문제 (XOR과 같은 비선형문제)는 풀 수 없다. 그래서 인풋레이어와 아웃풋레이어 중간에 층 만들어서 신경망이 더 복잡한 문제까지 해결할 수 있게 만들었다. 입력층과 출력층 사이에 있으면서 계산의 결과를 사용자가 볼 수 없기 때문에 hidden 층이라고 불린다. 변수 수와 상관없이 다수의 노드가 포함 가능하다.
출력층(Output Layers)
- 값을 출력하는 층이다.
- 출력 노드의 수는 출력변수의 수와 같습니다.
- 출력층에는 대부분 활성함수(activation function)가 존재한다.
- 회귀문제에서 예측할 목표변수가 실수값인 경우 활성화함수가 필요하지 않는다.
- 이진 분류(binary classification) 문제의 경우 활성함수를 시그모이드(sigmoid) 함수를 사용해서 출력을 확률 값으로 변환하여 부류(label)를 결정하도록 한다.
- 다중클래스(multi-class)를 분류하는 경우 출력층 노드가 부류 수 만큼 존재하며 소프트맥스(softmax) 함수를 활성화 함수로 사용한다.
각 층은 n 개의 뉴런(노드)로 구성되어 있고 각각 가중치(weight)와 편향(bias)을 가지고 있다.
신경망이 작동하는 과정
- 훈련데이터를 입력층으로부터 받는다.
- 입력데이터는 가충치와 가중합(weighted sum)을 한다
- 편향(bais)이 더해진다
- 편향이 더해진 가중합은 활성화 함수(activation function)을 통해 다음 층으로 전달된다
활성함수 (Activation function)
활성화 함수는 신호를 얼마만큼 전달할지를 결정한다. 그래서 전달함수(transfer funtion)이라고 부르기도 한다.
히든레이어를 만든다고 해서 바로 비선형문제를 해결할 수 있는 것은 아니다. 선형연산을 하는 여러 개의 층을 쌓아도 결국 하나의 선형연산과 크게 다르지 않기 때문이다. 그래서 활성함수를 사용해서 선형분류 신경망을 비선형분류 신경망으로 바꾸어 준다. 즉, 입력값을 비선형적인 방식으로 출력하기 위해서 사용하는 것이 활성함수이다.
활성함수의 종류는 다양한데 시그모이드함수, 렐루함수, 탄젠트함수 등이 있다.
활성화 함수 종류 | 특성 |
linear | 디폴트 값으로 별도 활성화 함수 없이 입력 뉴련과 가중치의 계산 결과 그대로 출력 (ex.선형회귀) |
sigmoid 시그모이드 함수 | 이진 분류 문제에서 출력층에 주로 사용됨 |
softmax 소프트맥스 함수 | 셋 이상을 분류하는 다중 클래스 분류문제에서 출력층에서 주로 사용됨 |
relu 렐루 함수 | 은닉층에 주로 사용됨 |
'딥러닝' 카테고리의 다른 글
분산 표현(Distributed representation) (0) | 2021.08.18 |
---|---|
자연어처리(NLP, Natural Language Processing) (0) | 2021.08.17 |
신경망 학습 최적화 방법 Optimization (0) | 2021.08.12 |
과적합을 막기 위한 방법 - Early Stopping, Weight Decay, Weight Constraints, Dropout (0) | 2021.08.11 |
역전파(EBack Propagation), 경사하강법, 손실함수 (0) | 2021.08.11 |