초평면을 이용해서 문제를 해결하는 알고리즘(차원을 늘려서 해결)
초평면 : N차원에서 -1차원이 면의 차원
3차원에서 2차원의 면으로 문제를 해결
margin : A 클래스와 B 클래스 경계선 사이의 길이
SV : A 클래스와 B 클래스 경계선 사이의 공간
38선과 DMZ
매개변수 c 값에 대해서 겹치는 값을 얼마큼 허용할지 구분
XOR Problem
신경망을 하나가 아닌 여러개를 쓰니까 해결가능한것을 수학적으로 증명함
Multi-layered Perception
SVM
Deep Neural Network
TensorFlow 1순위 : 저수준 api, 컴퓨터언어에 가까워서, 진입장벽높음
PyTorch 1순위, 고수준 api, 사람언어에 가까워서, 진입장벽 낮음
keras : 개념 잡기 좋음, 진입장벽 낮음,
ONNX : 오닉스, 출력을 오닉스로 하면 모든 호환이 가능함(중립적인 모델)
Microsoft Cognitive toolkit (음성관련으로는 쓸만함)
히든 레이어 부분들은 프로그램을 주로 이용함
※ 훈련반복
한 layer씩 지날때마다 가중치에 의해 데이터 변환이 이루어짐
랜덤한 가중치를 부여하고 나온 예측된 결과 y와 진짜 y를 비교해서 다시 가중치(w, weight)를 업데이트
이것을 반복
하지만 과훈련하면 과적합 문제발생 -> X_test값 넣음
1차 함수
def linear_function(x):
a = 0.5
b =2
return a * x + b
배열을 넣으면 선으로 나옴
x = np.arange(-5,5,0.1) #배열
y = linear_function(x) #배열인 x 값으로 이루어진 배열
plt.plot(x,y)
2차 함수
def quadratic_function(x):
a=1
b= -2
c= -2
return a*x**2 + b*x +c
3차 함수
def cubic_function(x):
a=4
b=0
c=-1
d=-8
return a*x**3 + b*x**2 + c*x + d
지수함수 와 로그 함수
수학적으로 다양한 차원이 존재 = 수많은 벡터도 존재
벡터 계산을 단순화하기 위해 같은 성질의 여러 벡터를 한 행렬 안에 표기하고 그것을 단순화하여 표기한 것으로 보면 된다. numpy로 사용
하나의 숫자를 담고 있는 텐서, 따로 형상은 없음
.ndim 메소드: 몇차원인지 알 수 있음
a = np.array([1,2,3,4])
m= np.array(10)
d= a * m
print(d)
[10,20,30,40]
Broadcast : 복제해서 갯수를 맞춘다음에 계산함
T 메소드 ex) a.T
가로데이터를 세로로 세우는 것
[1,2,3] 을 [1,4]
[4,5,6] [2,5]
[3,6]
keras 는 내부적으로 데이터를 가지고 있는 것이 아니라 실행하는 순간 구글 사이트에 가서 받아온다.
활성화 함수(임계점을 판단하는 함수)
int=정수 u=양의~