Gradient (기울기) 만약에 x0, x1의 편미분을 동시에 계산하고 싶다면 어떻게 할까요? 그러면 모든 편미분을 벡터로 정리를 해야 하는데, 그 정리한것을 Grdient(기울기)라고 합니다. 예를 들어서 아래의 코드와 같이 구현할 수 있습니다. def numerical_gradient(f, x): h = 1e-4 grad = np.zeros_like(x) # x와 형상이 같은 배열을 생성 for idx in range(x.size): tmp_val = x[idx] # f(x+h) 계산 x[idx] = tmp_val + h fxh1 = f(x) # f(x-h) 계산 x[idx] = tmp_val - h fxh2 = f(x) grad[idx] = (fxh1 - fxh2) / (2*h) x[idx] = ..
이번에는 Neural Network(신경망) 학습에 대하여 설명하고 Pyhon에서 Mnist Dataset의 손글씨 숫자를 학습하는 코드를 구현해 보겠습니다. Data 주도 학습 Machine Learning(ML)의 중심에는 Data(데이터)가 존재합니다. 데이터가 이끄는 접근 방식 덕에 사람 중심 접근에서 벗어날 수 있습니다. 근데, 보통 문제를 해결하려고 하면 패턴을 찾아내기 위하여 사람은 생각을 하고 결론을 도출합니다. 다만 Machine Learning(기계 학습)에서는 사람의 개입을 최소화하고, 수집한 데이터의 패턴을 찾으려고 시도합니다. 그리고 Neural Network(신경망) & DL(딥러닝)은 기존 Machine Learning(기계 학습)에서 사용하던 방법보다 사람의 개입을 배제할 수..
이번에는 Neural Network, 신경망에 데하여 알아보겠습니다. Neural Network(신경망)은 인공지능, 머신러닝에서 사용되는 컴퓨팅 시스템의 방법중 하나입니다. 인간 또는 동물의 뇌에 있는 생물학적 신경망에서 영감을 받아 설계되었습니다. 생물학적 뉴런이 서로간의 신호를 보내는 방식을 모방합니다. Perceptron (퍼셉트론)과 Neural Network(신경망) Perceptron(퍼셉트론)과 Neural Network(신경망)은 공통점이 많습니다. 그래서 다른점을 중점으로 보면서 설명해보겠습니다. 신겸망를 그림으로 나타내면 위의 그림처럼 나옵니다. 맨 왼쪽은 Input Layer(입력층), 중간층은 Hidden layer(은닉층), 오른쪽은 Output Layer(출력층)이라고 합니다...
Perceptron(퍼셉트론) 알고리즘은 신경망(딥러닝-DL)의 기원이 되는 알고리즘입니다. 그래서 Perceptron(퍼셉트론)의 구조를 배우는건 신경망, DL-딥러닝에 관한 개념 및 아이디어를 배우는데 도움이 됩니다. Perceptron(퍼셉트론) 이란? Perceptron(퍼셉트론)은 다수의 신호를 Input(입력)으로 받아 하나의 신호를 출력합니다. 여기서 신호는 전류나 강물처럼 흐름이 있는것을 생각하면 됩니다. Perceptron(퍼셉트론) 신호도 Flow(흐름)을 만들고 정보를 전달합니다. 다만, 신호는 '흐른다 / 안 흐른다 (1이나 0)'의 2가지 값을 가질 수 있습니다. Perceptron(퍼셉트론)의 동작원리 한번 Input(입력)으로 2개의 신호를 받은 Perceptron의 예시 그림..
이번 글에서는 Transformer 모델의 전반적인 Architecture 및 구성에 데하여 알아보겠습니다. Transformer: Attention is All You Need Transformer 모델은 2017년에 "Attention is All You Need"라는 논문을 통해서 소개되었습니다. 주요한 핵심 아이디어는 "Self-Attention" 이라는 매커니즘에 기반하여, 문장 내의 모든 단어들 사이의 관계를 한 번에 파악할 수 있다는 점에 있습니다. 이전의 설명했던 RNN(Recurrent Neural Network), LSTM(Long Short-Term Memory)과 같은 순차적인 Model이 가진 순차적 처리의 한계를 극복했다는 특징이 있습니다. 그리고 현재 Transformer 모델..
What is Matplotlib? Matplotlib은 딥러닝 실험을 할때 그래프 그리기 및 데이터를 시각화 해주는 라이브러리입니다. Matplotlib을 사용하면 그래프 그리기, 데이터 시각화가 쉬워지고, 주로 데이터 분석을 할때 사용합니다. 대표적으로는 선, 막대 그래프, 산점도, 히스토그램 등을 만들수 있습니다. Matplotlib을 이용하여 그래프 그려보기 그래프를 그릴려면 Matplotlib 라이브러리의 Pyplot 모듈을 이용합니다. 한번 sin(사인) 함수를 그리는 예를 한번 살펴 보겠습니다. import numpy as np import matplotlib.pyplot as plt # 데이터 준비 x = np.arange(0, 6, 0.1) # 0부터 6까지 0.1 간격으로 생성 y = ..
전에 썼던 내용에 이어서 써보겠습니다. 합성곱 신경망 (CNN Model)과 비교한 Self-Attention CNN은 *Convolution filter(합성곱 필터)라는 특수한 장치를 이용해서 Sequence의 지역적인 특징을 잡아내는 모델입니다. 여기서 Convolution filter(합성곱 필터)는 합성곱 신경망을 구성하는 하나의 요소-필터는 데이터를 전체적으로 훑으면서 인접한 정보를 추출하는 역할을 합니다. 자연어는 기본적으로 Sequence(단어 혹은 형태소의 나열)이고 특정 단어 기준 주변 문맥이 의미 형성에 중요한 역할을 하고 있으므로, CNN이 자연어 처리에 널리 쓰이고 있습니다. 위의 그림은 CNN 문장의 Encoding 방식입니다. Convolution filter(합성곱 필터)가 ..
1. Attention Attention은 CS 및 ML에서 중요한 개념중 하나로 여겨집니다. Attention의 매커니즘은 주로 Sequence Data를 처리하거나 생성하는 모델에서 사용됩니다. -> Sequence 입력을 수행하는 머신러닝 학습 방법의 일종 Attention의 개념은 Decoder에서 출력을 예측하는 매시점(time step)마다, Encoder에서의 전체의 입력 문장을 다시 한번 참고하게 하는 기법입니다. 단, 전체 입력 문장을 전부 다 종일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야 할 요소와 연관이 있는 입력 요소 부분을 Attention(집중)해서 보게 합니다. 이 방법이 문맥을 파악하는 핵심의 방법이며, 이러한 방식을 DL(딥러닝)모델에 적용한것이 'Attent..
1. Word Embedding? Word Embedding, 워드임베딩 이란? 텍스트 데이터를 수치형 벡터로 변환하는 방법입니다. 다른 의미로 말하면 Text내의 단어들을 컴퓨터가 이해할 수 있는 Vector의 형태로 변환하는것을 말합니다. 즉, 단어를 고차원 공간의 저차원 벡터로 변환하는 방법입니다. Word Embedding 과정을 거친 Vector는 단어의 의미(mean), 문맥(context), 유사성(similar) 등을 수치화 해서 표현할 수 있습니다. 워드 임베딩의 과정은 크게 보면 2가지의 방법으로 이루어집니다. 2. Word Embedding의 방법 Word Embedding의 방법은 크게 보면 2가지의 방법으로 이루어 진다고 했습니다. 하나는 Count기반 방법, 다른 하나는 예측 기..
1. What is Word2Vec? Word2Vec은 단어를 벡터로 변환하는데 사용되는 인기있는 알고리즘 입니다. 여기서 단어는 보통 'Token' 토큰 입니다. 이 알고리즘은 단어(Token)들 사이의 의미적 관계를 Vector 공간에 잘 표현할 수 있는 방법을 학습하는 비지도방식(Unsupervised learning)으로 설계한 알고리즘 입니다. 주변 단어들(문맥)을 통해서 각 단어들을 예측하거나, 반대로 각 단어들을 통해 주변의 단어들을 보고 예측하는 방식으로 작동합니다. 비유 하자면 이미지를 학습하듯, 단어를 Vector로 보고 학습합니다. 이렇게 Word2Vec은 단어들 사이의 의미적인 관계를 파악합니다. 그리고, 위의 그림에 있는 문장을 이용해 모델을 학습 시키기 위해서 각 단어(Token..