분류 전체보기 310

[Books] 밑바닥부터 시작하는 딥러닝 1 시작하기

밑바닥부터 시작하는 딥러닝1을 리뷰합니다. 밑바닥부터 시작하는 딥러닝(이하 밑시딥)1은 파이썬을 시작하고, 딥러닝에 관심을 가졌다면 필수적으로 읽고 가야하는 책이라고 생각한다. 밑시딥 시리즈는 딥러닝 패키지를 사용하지 않고 딥러닝을 밑바닥 구현부터 시작하기 때문에 딥러닝의 구조를 하나하나 파악할 수 있는 아주 좋은 책이다. 이 글에서는 밑시딥1을 읽고 지극히 개인적으로 중요하다고 생각하는 부분을 정리할 것이기 때문에 일부 내용이 빠져있을수도 있다. 밑시딥1은 밑바닥부터 구현하는 것을 목표로 두기 때문에 외부 라이브러리를 최소한만 사용한다. (numpy, matplotlib은 예외적으로 사용한다.) 기본적인 산술 연산 및 자료 구조와 같은 내용(1장)은 여기 코드를 참고하길 바라며, 본 글에서는 넘어가고,..

[Books] 임베딩(embedding)의 종류

이기창님께서 작성하신 한국어 임베딩을 정리 및 요약했습니다. 컴퓨터는 사람이 사용하는 자연어를 제대로 이해할 수가 없다. 그렇기 때문에 기계가 이해할 수 있도록 변환해주는 작업이 필요하다. 자연어가 가지는 통계적인 패턴(statistical pattern)을 벡터로 변환해주는 것이다. 임베딩을 만들 때 쓰는 통계 정보는 단어의 빈도, 언어 모델, 분포 가정으로 총 세 가지가 존재한다. 단어의 빈도 단어의 빈도는 BoW(Bag of Words)라고도 부르며, 어떤 단어가 많이 쓰였는지를 중요시한다. 순서를 고려하지 않고 단어들을 파싱(parsing)해서 단어의 빈도 수만 확인하는 방법이며, 대표적인 기법으로는 TF-IDF(Term Frequency-Inverse Document Frequency)이다. 딥..

[Books] 한국어 임베딩 시작하기

이기창님께서 작성하신 한국어 임베딩을 정리 및 요약했습니다. 한국어 임베딩은 한국어 자연어 처리를 하는 것에 있어 바이블과 같은 책이라고 말할 수 있다. 본 책의 내용을 간략하게 설명하고 본인의 스타일대로 추가 작성할 것이다. 일단 시작하기에 앞서 환경 설정 부터 진행할 것인데, 본인은 도커 환경에 컨테이너를 설치한 후 로컬 호스트에 연결시켜서 사용할 것이다. $ docker pull ratsgo/embedding-cpu docker run -it --rm --name ko_embedding \ -p 8888:8888 -v C:\[local directory]\:/notebook/embedding \ ratsgo/embedding-cpu:latest 로컬 호스트의 포트와 컨테이너의 포트를 연결시켜 준 후..

[Linear Algebra] trace operate

Trace 연산자는 행렬의 모든 주대각 성분의 합을 의미하며, 다음과 같이 정의한다. \[ Tr(\boldsymbol{A}) = \sum_{i} \boldsymbol{A_{i,i}} \] Trace 연산자는 Transpose 연산자에 대해 불변(invariant)이다. 또한, 행렬 곱으로 이루어진 정방행렬의 대각합은 각 행렬곱의 순서를 바꾸어도 행렬곱이 정의된다. 단, 행렬 순서를 바꾸어도 연산이 된다는 가정하에 적용된다. $ Tr(\boldsymbol{ABC}) = Tr(\boldsymbol{CAB}) = Tr(\boldsymbol{BCA}) $ \[ Tr( \prod_{i=1}^n \boldsymbol{F}^{(i)}) = Tr(\boldsymbol{F}^{(n)} \prod_{i=1}^{n-1} \..

[Linear Algebra] 무어-펜로즈 유사역행렬(Moore-Penrose pseudoinverse)

정방행렬이고, 특이행렬이 아닐 경우 즉, full rank인 정방행렬(square matrix)에서만 역행렬을 정의할 수 있다. 정방 행렬이 아닌 행렬에서는 역행렬을 정의하는 것 대신에 무어-펜로즈 유사역행렬을 다음과 같이 정의할 수 있다. \[ A^{+}= \lim_{a \rightarrow 0}(A^T A + \alpha I)^{-1} A^T \] $A^{+}$는 행렬 $A$의 무어-펜로즈 유사역행렬이다. 또한, 다음과 같은 조건을 만족해야지만 유사역행렬이라고 부를 수 있다. $ A A^+ A = A $ $ A^+AA^+ = A^+ $ $ (AA^+)^T = AA^+ $ $ (A^+A)^T = A^+A $ 이전 글에서 다룬 SVD로 유사역행렬을 쉽게 구할 수 있다. 우리는 SVD를 다음과 같이 정의한..

[Linear Algebra] 고윳값 분해(eigen decomposition)

변수의 보편적인 성질을 찾아내면 변수를 더 잘 이해할 수 있는 것들이 많다. 소인수 분해를 통해 16을 설명한다면 $2^4$로 간결하게 이해할 수 있을 것이다. 비슷한 맥락으로 행렬을 다양한 방식으로 분해하게 되면 기존의 구성에서는 미처 발견하지 못하는 여러 기능적인 속성을 발견할 수도 있다. 이럴때 가장 많이 사용되는 행렬 분해 방법 중 하나는 고윳값 분해(eigen decomposition)이다. 특이값 분해도 많이 사용되지만, 다음에 다루어 볼 것이다. 고윳값 분해는 행렬을 고유벡터(eigen vector)와 고윳값(eigen value)으로 분해한다. 정방행렬 $\boldsymbol{A}$의 고유벡터는 하나의 0이 아닌 벡터이며, $\boldsymbol{A}$와 곱해도 $\boldsymbol{x}..

[Linear Algebra] 노름(norm) 이란?

기계 학습(Machine Learning)에서는 벡터의 크기를 측정할 때 노름$^{\mathsf{norm}}$이라고 불리는 함수를 이용해 측정하며, 다음과 같이 표기 및 정의한다. \[ L^p = ||x||_p = (\sum_i |x_i|^p)^{\frac{1}{p}} \] $p \in \mathbb{R}, p \ge 1$이다. 일반적으로 노름은 벡터를 음이 아닌 값으로 사상(mapping)하는 것이며, 벡터 $\boldsymbol{x}$의 노름은 원점에서 점 $x$까지의 거리이다. 노름은 다음과 같은 성질을 만족하는 임의의 함수이다. $ f(\boldsymbol{x}) = 0 \Rightarrow​ \boldsymbol{x} = \boldsymbol{0} $ $ f(\boldsymbol{x} + \bo..

[Linear Algebra] 선형대수학 기초 용어 정리

Contents 선형대수(Linear Algebra)는 수학의 한 분야이며, 공학 분야에서 많이 사용된다. 또한, 선형대수는 정수, 그래프, 논리 연산과 같은 구분되는 값을 가지는 대상을 연구하는 이산수학과 달리, 미적분학, 수치해석과 같이 연속적인 값을 다루는 분야와 같이 묶여 연속수학에 속한다. 기계 학습(Machine Learning)에서 사용되는 알고리즘을 이해하고 적용하기 위해서는 연속수학에 속하는 학문을 잘 알아야하며, 이번에는 선형대수에 대해서 다루어볼 것이다. 선형대수는 벡터 공간, 벡터, 선형 변환, 행렬 등을 연구하는 대수학의 한 분야이며, 선형대수에서 나오는 필수적인 주요 개념부터 차근차근 살펴보자. 목차는 다음과 같다. 변수 유형(Scalar, Vector, Matrix, Tenso..

[Docker] -e 란? 컨테이너 내에서 환경 변수 설정하기

-e는 컨테이너 내부에서 환경 변수를 설정하는 명령어이다. MySQL 이미지를 설치해 환경 변수를 설정해보자. $ docker run -d --name MySQL_test \ -e MYSQL_ROOT_PASSWORD=1234 \ -e MYSQL_DATABASE=wordpress mysql:5.7 $ docker run -d -e WORDPRESS_DB_HOST=mysql \ -e WORDPRESS_DB_USER=root \ -e WORDPRESS_DB_PASSWORD=1234 \ --name wordpress --link wordpressdb:mysql -p 80 wordpress -e 로 MySQL 각각의 환경 변수를 설정해줄 수 있다. CONTAINER ID IMAGE COMMAND CREATED S..

Docker 2022.03.04

[Docker] -i, -t, -d 란?

-i, -t 옵션은 컨테이너와 상호(interactive) 입출력을 가능하게 해준다. t는 tty를 할당하고, i는 표준 입출력을 사용한다. -d 옵션은 -i, -t와는 달리 백그라운드로 작동한다. -it 옵션을 적용하면 컨테이너가 생성과 동시에 실행되며 /bin/bash 로 접근하게 된다. 하지만 -d를 사용하게 되면 정지된 컨테이너만 생성된다. 입출력이 없는 상태로 컨테이너를 실행하는 것이다. $ docker run -it --name test_it ubuntu:18.04 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 254fe0d44a41 ubuntu:18.04 "bash" 5 seconds ago Up 5 seconds tes..

Docker 2022.03.04
반응형