book title : 머신러닝, 딥러닝에 필요한 기초 수학 with 파이썬
pages : 177 ~ 197
key concepts :
-
벡터의 내적
- a⋅b = |a||b|cosθ
- 이거 왜 그런지 좀 이해가 필요함...
- θ에 따라 내적 값(a⋅b)이 >0, 0, <0이 된다는데 더 공부 필요
- 0일 때는 직교
- 내적의 결과는
scalar
-
벡터의 외적
- 외적의 결과는
matrix
- 열벡터와 행벡터의 행렬곱
- a⊗b = a bT
-
행렬을 이용한 데이터 표현
-
테이블형 데이터
: 습관적으로 행 우선 방식 사용(원래 벡터는 요소가 열로 표시되지만, 행으로 표시되는 방식)
- 이 경우 x 벡터말고 각 feature를 벡터로 나타낼 수 있음
- 행렬 X는 (N - 벡터 갯수,D - 특징의 수)행렬임
-
이미지
:(갯수, 세로, 가로, 차원)
-
문서
: 문서 -> 줄 -> 단어로 쪼개고 그것을 숫자로 매칭시킨 후 행렬 모양으로 나타냄
: 한 줄의 단어 수가 제각기 다르니, 긴 부분을 자르거나 모자란 부분은 <NULL>
로 채움
: 그리고 이것을 다시 길이 10인 벡터로 쓰고 단어 숫자 자리만 1로 바꾸는 식으로 사용
-
Numpy
- 1차원 vector는 사실 행벡터처럼 보이지만, 여기선 방향을 고려하지 않음(1차원이기에 방향 개념이 없음)
- 실제에서는 벡터를 열벡터로 씀
- 만약 방향성을 부여하려면 (N,) -> reshape으로 (1, N)으로 해줘서 열벡터로 해줘야 함
- 근데 또 이렇게 (1, N)이 된다는 건 사실 행렬(행 또는 열이 하나 뿐인)임.(그냥 정확한 개념만 알자!)
- 축이 늘어날 때마다 그 축이 0번째임
- 파이썬은 행우선방식! -> 그래서 2차원 행렬이 되면 세로가 0번 axis임
- 브로드캐스팅
: 저차원 ndarray
를 고차원으로 올려주고, 새로 생긴 차원을 다른 행렬의 행 또는 열의 수에 맞춰서 늘리는 것
1) 굳이 한 쪽에서만 일어나는 것 아님
2) A(4,1) * B(3,)하면
- 1) (3,) -> (1,3)로 차원이 높여지고
- 2) 1인 차원이 서로 확장되어 (4,3) * (4,3) - position wise가 된다.