숨 log/STUDY
[STUDY] 5월 1주차 - 선형대수/파이썬(+Numpy)
알 수 없는 사용자
2019. 5. 1. 17:20
[선형대수]
행렬 및 벡터를 통해 표현되는 선형 방정식 및 선형 함수를 다루는 수학의 분야
- 벡터
- 내적(스칼라곱) : 각각의 성분끼리 곱을 모두 더하는 것
- 머신 러닝에서 내적은 왜 필요한 것일까?
- 두 벡터가 이루는 각을 성분 값들로 부터 구할 수 있다
- 행렬
- 속성
- 영행렬
- 정방행렬
- 대각성분, 대각행렬, 단위행렬
- 정칙행렬 : 역행렬이 존재하는 행렬
- 역행렬
- 전치행렬, 대칭행렬
- 합
- 곱
- 스칼라곱
- 행렬 곱
- 결합 법칙이 성립한다.
- 분배 법칙이 성립한다.
- 행렬 곱의 역행렬 : AB역행렬 = (B역행렬)X(A역행렬)
[파이썬]
- 인터프리트 언어
- 데이터형
- 문자열형(str)
- 문자열은 '+'로 연결할 수 있고 '*'로 반복할 수 있다.
- 숫자형(int, float)
- 부울형(bool)
- 변수
- 변수의 형태는 변수가 정의될 때 정해지며 모든 형의 값을 대입할 수 있다.
- 어떤 값도 들어있지 않은 상태로 정의할 때는 'None'을 사용한다.
- 이미 정의 된 변수에 전혀 다른 형의 값을 대입하면 오류 발생할 수 있음
- 데이터 구조
- 리스트(list)
- '배열'과 유사한 성질을 가진 데이터형
- 리스트의 각 요소의 형을 반드시 일치시키지 않아도 된다.
- 딕셔너리(dict)
- 키(key)와 값(value)의 한 쌍으로 데이터를 정의한다.
- 기본 구문
- if : if-elif-else
- while : 조건에 따라 반복 실행
- for : 횟수에 따라 반복 실행
- 함수 : def 키워드 사용
- 클래스 : class 키워드 사용
- 라이브러리
- import 라이브러리명 as 별칭
- from 라이브러리명 import 메서드명
- 메서드 이름 앞에 아무것도 붙이지 않고 사용할 수 있다
: math.sin(a) -> sin(a)
- 라이브러리에서 제공하는 모든 메서들을 임포트하려면
: from import *
- Numpy
- 수치계산에 사용되는 파이썬 라이브러리
- import numpy as np
- Numpy 배열
- I = np.array( [ [1,0] , [0,1] ] )
- 선형대수를 비롯한 여러 수치계산을 효율적으로 구현할 수 있음
- 벡터 및 행렬 계산
- 벡터의 합 : A + B
- 벡터의 요소곱 : A * B
- 벡터의 내적 : np.dot(A, B)
- 행렬 합 : A + B
- 행렬 요소곱 : A * B
- 행렬의 곱 : np.dot(A, B)
- 다차원 배열 생성
- 성분이 모두 0인 배열 : np.zeros(성분의 수)
- 성분이 모두 1인 배열 : np.ones(성분의 수)
- 일정 범위의 수를 포함하는 배열
- np.arange(시작값, 끝값, 간격)
- np.arange(4) = array( [0,1,2,3] )
- np.arange(4, 10) = array( [4, 5, 6, 7, 8, 9] )
- np.arange(4, 10, 3) = array( [4, 7] )
- n X m 차원 배열로 바꾸기 : reshape(n, m)
- B = np.arange(1, 7).reshape(2, 3)
= array( [ [1, 2, 3],
[4, 5, 6] ] )
- 슬라이스
- 배열의 각 성분이나 배열의 일구 구하기
- 배열의 일부 구하기 : a[첫 인덱스 : 마지막인덱스 + 1]
- a[1:5] = array( [1, 2, 3, 4] )
- a[:5] = array( [0, 1, 2, 3, 4] ) : 첫 인덱스 생략시 0부터
- a[1:5:2] = array( [1,3] ) : 세번째 인수로 간격 설정 가능
- a[::-1] = array( [9, 8, 6, 5, 4, 3, 2, 1, 0] ) : 본래의 배열을 거꾸로 반환
- 브로드캐스트
- Numpy에서는 서로 다른 배열끼리도 계산 가능
- 차원이 작은 쪽이 차원이 큰 쪽에 크기를 맞춘 후에 계산됨
- 딥러닝을 위한 라이브러리
- 텐서플로우
- 모델을 수식에 따라 구현할 수 있어서 직관적이다.
- 모델 일부틑 이미 메서드로 만들어져 있다.
- 모델 학습 데이터를 가공하는 처리도 메서드로 만들어져 있다.
- 케라스
- 텐서플로우를 래핑한 라이브러리
- 모델 설계할 때 개발자가 수식에 맞춰 구현해야 할 경우에 대해서도 메서드가 마련되어 있음
- 테아노(Theano)
- 수치 계산 속도를 높여주는 파이썬 라이브러리
- 실행 때 C언어 코드가 생성되고 컴파일되므로 실행 속도가 빠르다
- 자동 미분 가능
- 벡터나 행렬, 스칼라를 나타내는 변수는 모두 '심볼'이라는 것으로 취급