2.Q.1 Quiz 1
Linear Algebra : Quiz 1
! 잠깐 !
-
본 페이지의 예제 코드에서는 실행되지 않는 기능이 빠져있을 수 있습니다.
-
아래 링크를 통해 본 페이지보다 원활한 과제 진행 환경을 경험해보세요.
Week 2-1
Linear Algebra 1
선형대수(Linear Algebra)는 벡터와 벡터공간, 벡터를 다루는 방법들을 연구하는 대수학의 한 분야이다.
여러 머신 러닝 알고리즘들, 특히 딥러닝 알고리즘들을 이해하고 사용하려면 선형대수를 잘 알아야할 필요가 있다.
import libraries
import numpy as np from grading import * print("done")
기하학적 벡터(GEOMETRIC VECTORS)
선형대수에 본격적으로 들어가기에 앞서, 가장 필수적인 개념인 벡터에 대해 먼저 소개를 하려고 한다.
보통 학교에서 배우고, 우리가 일반적으로 알고있는 벡터는 기하 벡터(geometric vector)라고 불리우며, 다음과 같이 표현한다.
\[\vec {x}, \vec {y}\]이 책에서 다루는 벡터는 보다 일반적인 관점에서의 벡터를 의미하는데, 다음과 같이 굵은 글자를 사용하여 표현한다.
\[\boldsymbol {x}, \boldsymbol {y}\]다음과 같은 코드를 통해 기하학적 벡터(geometric vector)를 경험해보자.
2D Geometric Vector
## vector = [x,y, u,v] ## vector starts from (x,y), size of (u, v) ### START CODE HERE vector1 = np.array([-10,-10,4,5]) vector2 = np.array([10,10,-4,-10]) ### END CODE HERE vectors = np.array([vector1, vector2, vector1 + vector2]) vectors
from matplotlib import pyplot as plt fig, ax = plt.subplots() ax.quiver(vectors[:,0],vectors[:,1], vectors[:, 2]-vectors[:,0], vectors[:,3]-vectors[:,1], color=['black', 'red', 'green'], angles='xy', scale_units='xy', scale=1) fig
3D Geometric Vector
다음 링크에서 실행해 볼 수 있습니다.
행렬의 계산
행렬 $A \in \mathbb{R}^{m \times n} $ 와 $B \in \mathbb{R}^{m \times n} $ 의 합은 요소별(element-wise)로 이루어지며 다음과 같이 정의된다.
\[A + B := \begin{bmatrix} a_{11} + b_{11} & \cdots & a_{1n} + b_{1n}\\\vdots & & \vdots \\a_{m1} + b_{m1} & \cdots & a_{mn} + b_{mn}\\ \end{bmatrix} \in \mathbb{R}^{m \times n}\]행렬 $A \in \mathbb{R}^{m \times n}$ 와 $B \in \mathbb{R}^{n \times k}$ 의 곱은 $ A \cdot B = C \in \mathbb{R}^{m \times k}$ 로 표현되며, 요소 $c_{ij}$ 는 다음과 같이 계산된다.
\[c_{ij} = \sum_{l=1}^{n} a_{il}b_{lj} ,\qquad i = 1,\dots,m,\quad j = 1,\dots,k.\]다음 코드를 완성해 행렬 $A \in \mathbb{R}^{m \times n} $ 와 $B \in \mathbb{R}^{m \times n} $ 의 합과 곱을 구하는 함수를 작성하라.
Exercise 1 : 행렬의 합(Matrix Addition)
def matrix_addition(A, B): # C = A + B ### START CODE HERE ### END CODE HERE return C
grading_matrix_addition(matrix_addition)
Exercise 2 : 행렬의 곱(Matrix Multiplication)
def matrix_multiplication(A, B): # C = A • B ### START CODE HERE ### END CODE HERE return C
grading_matrix_multiplication(matrix_multiplication)
Exercise 3 : 아다마르 곱(Hadamard product)
같은 크기의 두 행렬의 각 성분을 곱하는 연산으로 아다마르 곱이 존재한다.
즉, 요소별 계산(element-wise operation)을 하며 아다마르곱은 덧셈에 대하여 분배 법칙을 따르고 다음과 같이 표현된다.
다음 코드를 완성해 행렬 $A \in \mathbb{R}^{m \times n} $ 와 $B \in \mathbb{R}^{m \times n} $ 의 아다마르곱을 구하는 함수를 작성하라.
def hadamard_product(A, B): # C = A ⃝ B ### START CODE HERE ### END CODE HERE return C
grading_hadamard_product(hadamard_product)
역행렬과 전치행렬
Exercise 4 : 역행렬(Inverse)
정사각행렬 $A$ 와 $B$ 가 $AB = I_{n} = BA$ 를 만족할 때 $(\;단, \; A \in \mathbb{R}^{n \times n}, \; B \in \mathbb{R}^{n \times n}\;)$
$B$ 를 $A$ 의 역행렬(Inverse) 이라 하고, $A^{-1}$ 라고 표현한다.
역행렬을 구하는 함수를 만들어보자.
def inverse(A): # B = A^(-1) ### START CODE HERE ### END CODE HERE return B
grading_inverse(inverse)
Exercise 5 : 전치행렬(Transpose)
행렬 $A$, $B$ 의 각각의 요소가 $a_{ij} = b{ji}$ 일 때, $B$ 를 $A$ 의 전치행렬이라고 하며, $B = A^{T}$ 라고 한다. $( \; A \in \mathbb{R}^{m \times n}, \; B \in \mathbb{R}^{n \times m} \; )$
일반적으로, $A$ 의 열을 $A^{T}$ 의 행에 나열해서 $A^{T}$ 를 얻을 수 있다.
전치행렬을 구하는 함수를 만들어보자.
def transpose(A): # B = A.T ### START CODE HERE ### END CODE HERE return B
grading_transpose(transpose)
Exercise 6 : 대칭행렬(Symmetric Matrix)
대칭행렬은 정사각행렬에서 대각선에 대칭인 두 원소가 같은 행렬을 말한다.
즉, 정사각행렬의 원소 $a_{ij}$ 와 원소 $a_{ji}$ 가 같은 행렬이다 : $A = A^{T} ( \; 단, \; A \in \mathbb{R}^{n \times n} \; )$
임의의 두 대칭행렬의 합은 항상 대칭행렬이라는 특징이 있다.
행렬을 입력받아 대칭행렬인지 확인하는 함수를 만들어보자.
def is_symmetric(A): # is_symmetric = bool (True or False) ### START CODE HERE ### END CODE HERE return is_symmetric
grading_is_symmetric(is_symmetric)