1. 파이썬 기초
- 필요 라이브러리 : numpy / matplotlib
- 개발환경 : Google Colab
- 필요 개념
ㆍ자료형 / 변수 / 리스트 / 딕셔너리 / bool / if-else / for / function / class / broadcast
ㆍtype(변수)
ㆍnumpy
ㆍmatplotlib.pyplot
- numpy 활용
ㆍnp.array([[1,2,3],[4,5,6]]) : 행렬 생성
ㆍnp.ndim() : 행렬의 차원수 출력
ㆍnp.shape() : 행렬의 모양 출력
ㆍnp.dot(a,b) : 행렬의 곱
ㆍ
2. 퍼셉트론
- 개념
: 1957년 프랑크 로젠 블라트가 고안한 알고리즘
: 신경망(딥러닝)의 기원
- 퍼셉트론의 관련 개념
ㆍNode (Neuron) : 데이터를 처리하는 단위
ㆍWeight : 노드의 중요도를 조절하는 값
ㆍtheta : 결과 출력의 기준 값 (임계 값)
- 다층퍼셉트론
: 퍼셉트론을 여러층으로 표현한 알고리즘
: 퍼셉트론으로는 AND와 OR, NAND를 표현할 수 있으나 XOR을 표현할 수 없기 때문에 다층으로 쌓아 구현
=> 참조 : 2mukee.tistory.com/11
3. 신경망
- 개념
: 학습을 통해 적절한 가중치와 편향을 조절하여 결과를 출력하는 알고리즘
: 다층 퍼셉트론에서 은닉층을 늘려 구성
- 신경망의 구조
ㆍ입력층 : 데이터가 입력되는 노드의 충
ㆍ은닉층 : 입력층과 출력층 사이에 숨겨진 노드의 층
ㆍ출력층 : 출력을 담당하는 노드의 층
=> 은닉층과 출력층에서만 가중치를 가짐
- 활성화 함수
: 입력값을 은닉층에서 연산한 후 출력할 때 일정기준에 따라 출력값을 변화시키는 비선형 함수
: 입력신호의 총합으로 노드의 활성화 여부를 결정하는 함수
- 은닉층의 활성화 함수 종류
ㆍ계단 함수
: 입력값이 0이상이면 1을 출력하고 그 미만으로는 0을 출력
import numpy as np
import matplotlib.pylab as plt
def step_function(x):
return np.array(x>0, dtype=np.int)
x = np.arange(-5.0, 5.0, 0.1) # -5.0에서 5.0까지 0.1 간격으로 벡터 생성
y = step_function(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()
ㆍSigmoid
: 임계 값을 기준으로 0과 1사이의 값을 출력
def sigmoid(x):
return 1 / (1 + np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1) # -5.0에서 5.0까지 0.1 간격으로 벡터 생성
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()
ㆍReLU
: 입력이 0 이상이면 값을 그대로 출력하고 이하일 경우 0을 출력
def relu(x):
return np.maximum(0,x)
x = np.arange(-5.0, 5.0, 0.1) # -5.0에서 5.0까지 0.1 간격으로 벡터 생성
y = relu(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()
- 출력층의 활성화 함수
ㆍsoftmax
: 계산결과를 확률로 표현
: 주로 분류 문제에 이용
def softmax(a):
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
a = np.array([0.3, 2.9, 4.0])
print(softmax(a))
print(np.sum(softmax(a)))
[0.01821127 0.24519181 0.73659691]
1.0
- 신경망 관련 개념
ㆍPre processing (전처리)
: 모델의 식별능력과 학습속도 향상을 위해 입력 데이터에 특정 변환을 가하는 것
: 정규화 / 백색화 등
ㆍNormalization (정규화)
: 데이터를 특정 범위로 변환하는 처리
ex) 0~255의 픽셀 범위를 0.0 ~ 1.0으로 변환
ㆍwhitening (백색화)
: 전체 데이터를 균일하게 분포시키는 작업
ㆍbatch processing (배치 처리)
: 데이터를 하나로 묶어 한꺼번에 처리하는 방법
: batch (묶음)
- 참고 <기계학습 문제>
ㆍClassification (분류)
: 입력 데이터의 종류를 분류하는 문제
: 출력층 활성화 함수로 소프트맥스 이용
: 출력층의 뉴런 수를 분류하려는 클래스와 같게 설정
ex) 사진속 인물의 성별을 분류
ㆍRegression (회귀)
: 입력 데이터의 연속적인 수치를 예측하는 문제
: 출력층 활성화 함수로 항등함수 이용
ex) 사진속 인물의 몸무게를 예측
'Computer Science > DeepLearning' 카테고리의 다른 글
chatGPT란? (0) | 2023.01.11 |
---|---|
초보 딥러닝 - DeepLearning과 학습 (0) | 2021.04.04 |
DeepLearning을 활용한 MNIST 데이터셋 분류 정확도 향상 (0) | 2020.12.16 |
Tensorflow를 활용한 Neural Network 구현 (0) | 2020.12.16 |
머신러닝 기초 6 - 모델의 저장과 로딩 (0) | 2020.12.16 |