딥러닝

    Ensemble (앙상블)

    Ensemble 모델은 여러 개의 기본 모델들을 조합하여 정확한 예측을 수행하는 머신러닝 기법 Ensemble 모델에는 여러 가지 방법이 있지만, 대표적으로는 아래와 같은 4가지 방법이 있다 보팅 (Voting) 여러 모델의 예측을 모아서 다수결로 최종 예측을 결정하는 방법이며, 여러 모델이 서로 다른 샘플에서 높은 정확도를 보일 때 효과적입니다. 배깅 (Bagging) 데이터셋을 여러 개로 나누어서 각 모델에게 다른 데이터셋을 학습하도록 하는 방법. 각 모델이 다양한 관점에서 학습할 수 있으며, 이들의 예측을 평균내어 최종 예측을 결정 . 대표적으로 랜덤 포레스트 (Random Forest)가 있습니다. 부스팅 (Boosting) 부스팅은 여러 모델이 연속적으로 학습하도록 하여, 이전 모델이 잘못 예측..

    넘파이 (NumPy) - ndarray , 관련 함수들

    NumPy는 Numerical Python을 의미한다. 파이썬에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원하는 대표적인 패키지다. NumPy는 C/C++과 같은 저수준 언어 기반의 호환 API를 제공한다. NumPy는 빠른 배열 연산을 보장하지만, 파이썬 언어 자체가 가지는 수행 성능의 제약으로 중요한 부분은 C/C++ 기반의 코드로 작성하고 이를 NumPy에서 호출하는 방식으로 통합한다. (Tensorflow가 대표적인 예시) ndarray 개요 array1 = np.array([1, 2, 3]) print('array1 type:', type(array1)) print('array1 array 형태:', array1.shape) array2 = np.array([[1, 2, 3], [2,..

    Machine Learning (with Python)

    본 카테고리 글들은 "파이썬 머신러닝 완벅 가이드" 라는 책을 보고 작성하였습니다. + 강의 내용 및 책 내용을 요약하여 정리하였음. 머신러닝의 개념 머신러닝이란, 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 머신러닝의 분류 지도학습 분류 회귀 추천 시스템 시각/음성 감지/인지 텍스트 분석, NLP 비지도학습 클러스터링 자원 축소 강화 학습 파이썬 머신러닝 주요 패키지 머신러닝 패키지 사이킷런(Scikit-Learn) DL Library : Tensorflow, Keras, Pytorch 행렬/선형대수/통계 패키지 머신러닝의 이론적 백그라운드는 선형대수와 통계로 이뤄져 있다 NumPy : 행렬과 선형대수를 다루는 패키지 SciPy : 자연과학과 통계를 위한 패키지 데이터 ..

    경사 하강법 (Gradient decsent)

    경사 하강법(Gradient descent)이란? 1차 미분 계수를 이용하여 함수의 최소값을 찾아가는 반복적인 방법이다. 함수의 기울기를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를때 까지 반복하여 제시된 함수의 기울기로 최소값을 찾아내는 머신러닝의 알고리즘이다. 인공지능 모델이 데이터를 잘 표현 하도록 기울기를 사용해 모델을 조금씩 조정하여 최적화 하는 방법이다. 경사 하강법을 사용하는 이유 미분 계수를 구하는 과정을 컴퓨터가 구현하는 상황에서는 경사하강법으로 비교적으로 쉽게 구현할 수 있다. 데이터 양이 큰 경우에는 경사하강법과 같은 반복적인 방법을 통하여 값을 구하면 더 효율적으로 구할 수 있다. 경사 하강법 수식 표현 기울기가 양수면 \(x\) 값이 커질 수록 함수 값이 커진다는 것을 ..

    Activation Function : Step/Linear Function

    활성화 함수 (Activation Function)는 신경망의 출력을 결정하는 식이다. 기존 Perceptron 수식 $$ y= \begin{cases} 0 \quad (w_1x_1 + w_2x_2 \leq \theta) \\ 1 \quad (w_1x_1 + w_2x_2 > \theta) \end{cases} $$ 변형된 Perceptron 수식 $$ X = w_1x_1 + w_2x_2 + b $$ $$ h(x) = \begin{cases} 0 \quad x \leq 0 \\ 1 \quad x>0 \end{cases} $$ 입력 신호의 합 \(h(x)\)를 거쳐 변환되어 \(y\)를 출력. \(h(x)\) 함수는 입력 값이 0을 초과하면 1을 리턴하고, 0을 초과하지 않으면 0을 리턴한다. \(X\) :..

    Perceptron

    Perceptron 개념 인간의 신경 세포를 알고리즘화 한 것, 딥러닝의 기본 개념 N개의 입력을 받아 1개의 신호를 출력한다 신호가 임계값보다 크면 1을 출력, 임계값보다 작으면 0을 출력한다. (정보 전달 기능은 없음) 위위 그림에서 원은 Node or Neuron 라 지칭하며, 선은 Edge라고 지칭한다. Node에서 다음 Node로 정보가 전달될 때 가중치 /(w_1 \ w_2/)가 곱해져 전달된다. 전달되는 값과 가중치가 곱해진 값 /(w_1 \ x_1/)의 합 /(w_1 \ x_1 +w_2 \ x_2/)이 임계값 \(\theta\)보다 크면 1, 작으면 0이 출력된다. 퍼셉트론 수식 표현 $$ y= \begin{cases} 0 \quad (w_1x_1 + w_2x_2 \leq \theta) \..

    Quantization

    원문 출처 양자화는 연속 데이터를 이산 숫자로 변환하는 과정이다. 신경망 훈련 계산은 일반적으로 Floating point type (16bit, 32bit)를 사용하여 수행된다. 딥러닝에서 양자화는 일반적으로 부동 소수점에서 고정 소수점 정수로 변환하는 것을 말한다. 딥러닝에서 사용되는 양자화 기술은 Dynamic Quantization, Static Quantization 등이 존재한다. Quantization Mapping 양자화는 부동 소수점 값 \(x ∈ [ \alpha, \beta ]\)를 b-bit 정수 \(x_q ∈ [\alpha_q, \beta_q]\)에 맵핑한다. de-Quantization 프로세스 수학적 정의 $$ x = c(x_q + d) $$ Quantization 프로세스 수학..

    Lecture Notes - Gauss Elimination

    가우스 소거법 선형시스템의 해를 구하는 방법 가장 단순한 형태의 선형시스템은 아래와 같다. 이 선형시스템의 해는 무엇인가? $$ ax = b $$ 해가 하나인 경우 $$ 3x=6 $$ 해가 없는 경우 $$ 0x =y $$ 해가 여러개인 경우 $$ 0x = 0 $$ a = 0 이면 특이하다. ax = b의 해가 곧장 나오지 않는다. a의 역수 (inverse)가 존재하지 않는 경우, a가 특이(singular)하다고 한다. 해가 있으면 선형시스템이 "consistent" 해가 없으면 선형시스템이 "inconsistent" $$ Ax = b $$ 가우스 소거법 (Gauss elimination) 가우스 소거법은 임의의 m x n 선형시스템의 해를 구하는 대표적인 방법이다. 아래 두단계로 수행된다. Forwa..

    CNN (Convolutional Neural Network) 개념 정리

    1. CNN 개요 Image는 2차원 데이터고, 2차원 데이터를 1차원 벡터로 평활화하여 신경망 모델에 학습시켜야 한다. CNN의 특징은 Image Size를 줄이면서, 특징을 나타내는 이미지들을 추출 해낼 수 있다. FC Layer에 도달하기 전까지 평활화 과정 없이 이미지 정보를 효과적으로 유지하며, 특징 픽셀들을 추출한다. 위 과정에서 인접한 픽셀과의 관계를 효과적으로 인식 할 수 있고, 이미지의 특징을 모으거나 강화할 수 있다 CNN 주요 개념 정사각형 행렬 모양의 Filter가 이미지를 순회하며 Convolution을 계산한다. 계산 결과를 이용하여 Feature map을 만든다. Feature map을 모아 한 이미지에서 활성화된 픽셀만을 모은 Activation map을 만든다. 위 3가지 ..

    Lecture notes - Linear system (coding)

    1. 다음 3 x 3 행렬 A를 정의하는 numpy 코드를 작성하세요. $$ A = \begin{pmatrix} 1&2&1 \\ 1&2&3 \\ 2&3&-1 \end{pmatrix} $$ import numpy as np A = np.array(([1, 2, 1], [1, 2, 3], [2, 3, -1])) print(A) print(np.shape(A)) 2. 다음 3-Vector b를 정의하는 numpy 코드를 작성하세요. $$ A = \begin{pmatrix} 1\\ 3\\ -3\end{pmatrix} $$ import numpy as np b = np.array([1, 3, 3]) print(b) print(np.shape(b)) 3. 위 행렬 A를 구하는 역행렬 코드를 numpy linalg ..