인공지능 -> 머신러닝 -> 딥러닝
머신러닝:
딥러닝:
머신러닝
1. Regression(회귀):
2. Classification(분류):
딥러닝:
머신러닝의 Neural Network를 구현한 것
머신러닝 프레임워크:
파이썬으로 직접 구현:
머신러닝과 딥러닝의 데이터는 대다수가 행렬로 표시됨 -> 행렬 연산 숙지 필요
numpy Library
numpy:
머신러닝 코드 개발을 할 때 자주 사용되는 벡터, 행렬 등을
표현하고 연산할 때 반드시 필요한 라이브러리
머신러닝에서 숫자, 사람, 동물 등의 인식을 하기 위해서는 이미지 데이터를 행렬로 변환하는 것이 중요함
=> 행렬을 나타내기 위해서는 리스트를 사용할 수도 있지만, 행렬 연산이 직관적이지 않고 오류 가능성이 높기 때문에, 행렬 연산을 위해서는 numpy 사용이 필수임
vector / martrix
martirx(행렬) 생성:
np.array( [], [], ) 를 사용하여 생성
ex) A = np.array([ [1, 2, 3], [4, 5, 6 ] ])
형 변환 (reshape)
vector를 matrix로 변경하거나 matrix를 다른 형상의 matrix로 변경하기 위해서 reshape()을 사용하여 행렬의 shape을 변경하여야 함
행렬 곱
A 행렬과 B 행렬의 행렬 곱은 np.dot(A, B) 순서로 나타내며, 행렬 A의 열 벡터와 B 행렬의 행 벡터가 같아야 함.
만약 같지 않다면 reshape 또는 전치행렬(transpose) 등을 사용하여 형 변환을 한 후에 행렬 곱을 실행해야 함
행렬 곱은, 행렬의 원소 개수가 같아야만 계산할 수 있는 사칙연사의 한계가 있다.
이 한계를 극복하기 위해
broadcast
numpy에서는 크기가 다른 두 행렬 간에도 사칙연산을 할 수 있는데, 이를 broadcast라 함
=> 차원이 작은 쪽이 큰 쪽의 행 단위로 반복적으로 크기를 맞춘 후에 계산
ex) C = np.array([ [1, 2], [3, 4] ]) , D = np.array([4, 5]), print(C+D)
이때, [4,5]를 ([ [4, 5], [4, 5] ])로 broadcast 하여 연산이 가능해짐
이러한 broadcast는 행렬곱 연산에는 적용되지 않고, 사칙연산에만 적용됨!
transpose(전치행렬)
행렬 indexing / slicing

iterator

numpy.concatenate:
기존 행렬에 행 또는 열 추가하기 위해 사용
=> 머신러닝의 regression(회귀) 코드 구현 시 weight(가중치)와 bias(바이어스)를 별도로 구분하지 않고 하나의 행렬로 취급하기 위함
ex)
row_add = np.array([70, 80, 90]).reshape(1,3) #기존 행렬과 행,열 일치시키기
column_add=np.array([1000, 2000]).reshape(2,1)
B = np.concatenate((A, row_add), axis=0) #axis=0 => 행(row) 기준
C = np.concatenate((A, column_add), axis=1) #axis=1 => 열(column) 기준
numpy.loadtext:
numpy.random.rand:
numpy.sum / exp / log:
numpy.max / min / argmax / argmin:
numpy.ones / zeros:
matplotlib, scatter plot
수치미분
미분
편미분
체인룰