일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- jenkins
- 백준 점프
- 백준알파벳파이썬
- 지도자동구축 파이썬
- MongoDB
- 백준 예산
- express
- 프로그래머스
- 백준 전쟁 파이썬
- 피아노체조 파이썬
- 백준
- 백준 평범한배낭
- 백준 A->B
- 금고털이 파이썬
- CRUD
- express mongodb
- 1987파이썬
- 백준 피아노체조
- MySQL완전삭제
- 등수매기기 파이썬
- 도커 컨테이너
- 소프티어 장애물인식프로그램
- 파이썬 평범한배낭
- 장애물인식프로그램 파이썬
- 백준 등수매기기
- 백준 전쟁-전투
- 백준 점프 파이썬
- 파이썬데이터분석라이브러리
- 소프티어 지도자동구축
- 백준 바이러스
- Today
- Total
바위 뚫는중
[딥러닝] 심층 신경망의 기본 동작 과정, DNN, 퍼셉트론, MLP, Softmax Classifier 본문
❗️ Part 1. Introduction to Deep Neural Networks
LG Aimers 강의와 개인 공부 기록 - 소프트맥스 부분 좀 더 실전에서 공부해야 할듯
심층 신경망 deep neural networks 의 기본 동작 과정
✅ 심층 신경망이란?
인간의 두뇌 속 뉴런이나 신경세포와 동작과정을 모방하여 수학적인 인공지능 알고리즘으로 만든 것
AI? ML? DL?
Machine Learning
예시 data를 학습 data로 기계 학습 알고리즘에 주었을 때, 기계 학습 알고리즘이 예시 data에서 주어진 입력과 출력의 관계를 모방하여 새로운 입력이 주어졌을 때 해당 task를 잘 수행할 수 있도록 함
Deep Learning
이런 학습 data에 기반한 여러 기계 학습 알고리즘 중, 두뇌 속 신경세포의 정보 처리 과정을 모방한 기계 학습 방식의 일종이 딥러닝 알고리즘 → 최근 인공지능 알고리즘 기술 발전의 견인차 역할
✅ Artificial Neural Networks ANN
신경망에서는 기본적으로 하나하나 특정 계층들이 존재, 하나의 계층에 존재하는 다양한 뉴런들은 동일한 정보를 입력받아 각기 나름의 방식으로 처리된 정보들을 다시 또 한 세트에 입력으로 받아서 그 다음 계층 혹은 그 다음 단계에 있는 뉴런들이 정보를 좀 더 저희가 원하는 유의미한 정보들로 처리 및 변환하는 과정을 거치게됨
맨 왼쪽 뉴런들이 가장 최초에 존재하는 우리 눈의 시신경 세포라고 하면, 우리 눈으로 강아지를 볼때 이런 시신경들이 순차적으로 정보 처리를 해서 이게 강아진지 뭔지를 인식할 수 있게함
✅ Deep Neural Network DNN
시신경에서는 정보를 처리하는게 몇 단계에서 그치는게 아니라 수십 혹은 수백 단계에 걸쳐서 정보를 처리함으로서 보다 고수준의 인공지능 task를 수행할 수 있도록 함!
그래서 알고리즘의 능력과 수준을 많이 끌어올린 이 모델이 바로 심층 신경망!
딥러닝이 좋은 성능을 보이기 위해서는?
- 많은 학습 data 양
- 높은 사양의 GPU 하드웨어
- 보다 잘 학습시킬 수 있는 딥러닝 알고리즘
딥러닝이 적용되는 대표 분야
- 영상 인식
- 이미지 합성
- 기계 번역, 챗봇 (자연어 이해)
- 주식 계측 (시계열 data에서의 미래 예측)
✅ Perceptron 퍼셉트론 이란?
= 뉴런의 동작 과정을 수학적으로 본따서 만든 알고리즘, 역사적으로 오래동안 제안되어 왔던 기법
퍼셉트론 하나가 두개의 뉴런으로 부터 입력신호를 받고있다면?
각각의 입력신호 : x1, x2
뉴런은 정보를 잘 처리해서 출력 신호 y를 제공해주게 됨
내부적 가중치: w0, w1, w2
퍼셉트론은 입력정보를 가중치와 곱해서 가중합을 만들게 되고, 활성함수를 거쳐 출력신호를 만들어주게 됨
이 출력 신호는 뉴런이 실제 입력 신호를 제공하게 되는 그 다음 계층에 있는 뉴런들에게 해당 출력을 전달
Single Layer Perceptron
앞서 정리한 내용에 따라, 입력신호는 가중치가 곱해져서 합산되어 계산이 됨
이 합산된 값이
0보다 큰 경우, 최종 아웃풋은 1
0보다 작은 경우, 최종 아웃풋은 0
이런 형태로 정보를 처리하게 됨
Single Layer Perceptron for AND Gate
이러한 퍼셉트론을 통하여 논리연산에서의 AND gate의 구현도 가능하다
Single Layer Perceptron for OR Gate
적절한 가중치 변경으로 OR gate도 구현이 가능
Decision Boundary in Perceptron
앞서 봤던 AND gate, OR gate에서 설정된 특정한 선형 결합의 가중치 그리고 값이 0보다 크냐 작냐에 따라 최종아웃풋이 1혹은 0으로 결정이 되는데, 이 경계에 해당하는 것을 우리는 Decision Boundary라고 부름
Decision Boundary는 우리가 입력으로 주는 x1, x2 를 좌표공간에서 생각할때 Input feature space라고도 부름 input=feature
각각의 수식이 2차원에선 직선
직선 기준 오른쪽은 아웃풋 1, 왼쪽은 아웃풋이 0
= 양분된 영역 중 한쪽은 최종 output 1, 다른 쪽은 0인 결과가 나타남
Multi-Layer Perceptron for XOR Gate
exclusive or의 경우는?
(x1, x2가 각각 0 이거나 1일 경우에는 최종 함수값이 0이어야 하고 1,0 0,1의 경우에는 1이 나와야함)
XOR을 위해, 앞에서의 1차 결합식을 생각해보자
AND , OR 게이트 처럼 직선을 통해 양분해서 1과 0으로 나뉘게 되면, XOR은 직선으로 양분이 불가한 것을 알 수 있다. 그렇다면, XOR은 어떻게 해결할 수 있는가?
✅ Multi-Layer Perceptron MLP
여러단계의 퍼셉트론을 사용하면 XOR을 해결할 수 있음
→ neural network의 시작점, Multi-Layer Perceptron
간단한 퍼셉트론을 여러 단계에 걸쳐서 구현하면
XOR도 구현이 가능!
첫째는 AND, 둘째는 OR을 구성하도록 가중치 설정
이 두 출력값을 다시 입력값으로 받아서 XOR 을 구현
Hidden Layer
중간단계에 히든레이어가 하나라면, 1 Hidden Layer 라고 하는데,
hidden layer와 output layer가 각각 1개 → 2 layer neural network 라고도 한다.
Tensorflow Playground
각 계층의 뉴런 개수를 설정하여 task를 풀수있는 사이트!
Forward Propagation
여러 계층의 multi-layer perceptron의 순차적인 계산과정을 나타냄
- 특정 뉴런의 출력값 = activation (a)
- 아래첨자 = layer
- 위 첨자 = 몇번째 노드인지 의미하는 index
여러 노드, 여러 가중치를 모아 행렬로 나타내고, 계층별 가중치들의 모음체인 가중치 행렬을 정의
vector나 행렬곱을 사용하여 계산
- 뉴런의 입력으로 주어지는 백터 = 컬럼 백터
- 뉴런의 가중치 = 로우 백터
행렬의 내적 형태로 가중합을 나타낼수있고, 이 값을 sigmoid function(Logistic function)을 통과하면 아웃풋 값을 얻을 수 있음!
(0,1이 아닌 0에서 1사이의 실수값을 아웃풋으로!)
MNIST Dataset?
- 55,000장의 학습데이터와 10,000장의 테스트데이터
- 하나의 사진에 대해서 픽셀 개수가 총 28 by 28
- 각각의 픽셀 값은 픽셀값이 하얀색 1 검은색이면 1에 해당
- 적당한 회색은 값이 짙을수록 크기가 커지는 형태!
loss function
예측값과 참값의 차이를 모두 제곱해서 합산하여 loss 정의 = mean squared error loss라고 부름
→ error 제곱 후 평균을 취하게 되는 것!
mse loss 문제점
특정 클래스의 예측값과 참값의 차이가 최대 1이 될수도있고,
그럼 거기서 발생되는 gradient값이 그리 크지 않음 → 학습 느려짐
0-9까지 특정한 하나의 클래스로 분류를 하고자 할떄는
0일 확률 0.3, 1일 확률 0.2, …, 이런 열개에 걸쳐서 나타나는 확률값의 합이 총 1이되도록 하는
확률분포에 해당하는 백터를 얻는것이 더 바람직!
✅ Softmax Classifier (Softmax Layer)
그래서 Multi-class classification을 목적으로 output vector의 형태가 다 합쳤을때 1이 나오는
확률분포의 형태로 output을 내어줄 수 있도록 하는 특정한 활성 함수가 Softmax Classifier다!
Softmax layer의 입력 값은 기본적으로 전 layer의 행렬곱에 의한 결과이기 떄문에
가능한 값은 -무한대 ~ +무한대
그러면 우리는 이걸 합이 1인 형태의 확률 분포에 해당하는 벡터로 변환해주기위해 이값을 지수함수를 통과시킴, 모두 양수의 값으로 나오게 됨! ⇒ 소프트 맥스 레이어의 출력값
소프트맥스 회귀에서 비용 함수로 쓰는 cross entropy 함수
✅ Logistic Regression (분류에 사용하는 기법)
Softmax Classifier의 Special Case라고 할 수 있는데,
비용함수로 binary cross entropy를 사용
즉, 이진 분류 문제를 해결할 때 사용하는 통계 기법
소프트맥스부분이 생각보다 너무 방대해서 나중에 별도로 공부 및 정리가 필요할 듯 하다,,
세상 내용이 정말 많은 딥러닝 ^^,,
'Data, AI' 카테고리의 다른 글
[ML] 사이킷런 설치 및 구현 (m1 macbook) (0) | 2022.09.14 |
---|---|
데이터 분석을 위한 라이브러리_2 (0) | 2022.08.12 |
데이터 분석을 위한 라이브러리_1 (0) | 2022.08.12 |