Batch Normalization - 배치 정규화Batch Normalization (배치 정규화)의 개념은 2015년에 제안된 방법입니다.일단, Batch Normalization(배치 정규화)가 주목받는 이유는 다음의 이유들과 같습니다.Training(학습)을 빨리 할 수 있습니다. 즉, Training(학습) 속도를 개선하는 효과가 있습니다.초깃값에 크게 의존하지 않는다는 특징이 있습니다.그리고 Overiftting을 억제하는 특징이 있습니다. 즉, Dropout등의 필요성이 감소합니다.Batch Normalization(배치 정규화)의 기본 아이디어는 앞에서 말했듯이 각 Layer(층)에서의 Activation Value(활성화 값)이 적당히 분포가 되도록 조정하는 것입니다. 한번 예시를 보겠습..
Read moreParameter(매개변수) 갱신신경망 학습의 목적은 Loss Function (손실 함수)의 값을 가능한 낮추는 매개변수를 찾는것입니다. 이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는것은 Optimization(최적화) 라고 합니다.그리고 최적의 Parameter(매개변수) 값을 찾는 단소로 Parameter(매개변수)의 Gradient(기울기-미분)을 이용했습니다.Parameter(매개변수)의 Gradient를 구해, 기울어진 방향으로 Parameter(매개변수) 값을 갱신하는 일을 몇 번이고 반복해서 점점 최적의 값에 다가갔습니다. 이것이 확률적 경사 하강법 - Stochastic Gradient Descent(SGD)라고 합니다.또한 확률적 경사 하강법 - Stochastic G..
Read moreActivation Function (활성화 함수)Activation Function(활성화 함수)란? 신경망에서 각 Node & Neuron에서 Input Signal(입력신호)의 총합을 Output Signal(출력 신호)로 변환하는 함수입니다.또한 Nerual Network(신경망)의 Non-Linear 문제를 해결하게 해줍니다.비선형 문제: 입력, 출력 변수간의 관계가 선형이 아닌 문제를 의미합니다. 입력 변수가 작은 변화가 출력에 비례하지 않거나, 예측하기 어려운 변화를 일으키는 경우에 해당Activation Function(활성화 함수)는 임계값을 기준으로 출력이 봐뀝니다, 이런 함수를 Step Function(계산 함수)라고 합니다.그래서 Perceptron(퍼셉트론)에서 Activation..
Read moreFeed-Forward Network Feed-Forward Networks는 가장 기본적인 인공 신경망 구조중 하나로, Input Layer(입력층)에서 Output Layer(출력층)으로 데이터가 순방향으로 흐르는 구조를 의미합니다. 여기서 Data는 각 Layer(층)을 지날 때마다 가중치에 의해 변환되고, Activation Function(활성화 함수)를 통해 다음 Layer(층)으로 전달됩니다 이러한 네트워크는 순환 연결이나 복잡한 Feedback 루프가 없어서 계산이 비교적 간단하고, 다양한 문제에 적용될 수 있습니다. 정리하자면, 데이터가 네트워크를 통해 한 방향으로만 흐른다는 것을 의미합니다. 입력 데이터는 Input Layer(입력층)에서 시작하여 Hidden Layer(은닉층)을 거쳐..
Read more이번글에서는 단순한 Layer 부터 한번 구현해 보겠습니다. 앞의 글에서본 계산 그래프의 곱셈 노드를 'MultiLayer', 덧셈 노드를 'AddLayer'라는 이름으로 구현합니다. 곱셈 계층 모든 계층은 forward()와 backward()라는 공통의 Method(인터페이스)를 갖도록 구현합니다. forward()는 Forward Propagation(순전파), backward()는 Back propagation(역전파)를 처리합니다. 한번 구현해 보겠습니다. # coding: utf-8 class MulLayer: def __init__(self): self.x = None self.y = None # x와 y를 인수라 받고 두 값을 곱해서 반환 def forward(self, x, y): sel..
Read moreBackpropagation (오차역전파법) Backpropagation(오차역전파법)은 Weight Parameter(가중치 매개변수)의 Gradient(기울기)를 효율적으로 계산하는 방법입니다. Backpropagation(오차역전파법)을 이해하는 방법은 2가지가 있습니다. 하나는 수식을 통해서, 다른 하나는 계산 그래프를 통한것입니다. 보통은 수식을 통하지만, 이번에는 계산 그래프로 사용해서 '시각적'으로 한번 이해해 보겠습니다. 계산 그래프 계산 과정을 그래프로 한번 나타내 보겠습니다. 여기서의 그래프는 잘아는 그래프 자료구조로, 복수의 Node, Edge로 표현됩니다. 한번 문제를 보면서 이해해 보겠습니다. Q.1 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이때 지불 금액을 구..
Read moreGradient (기울기) 만약에 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] = ..
Read more이번에는 Neural Network(신경망) 학습에 대하여 설명하고 Pyhon에서 Mnist Dataset의 손글씨 숫자를 학습하는 코드를 구현해 보겠습니다. Data 주도 학습 Machine Learning(ML)의 중심에는 Data(데이터)가 존재합니다. 데이터가 이끄는 접근 방식 덕에 사람 중심 접근에서 벗어날 수 있습니다. 근데, 보통 문제를 해결하려고 하면 패턴을 찾아내기 위하여 사람은 생각을 하고 결론을 도출합니다. 다만 Machine Learning(기계 학습)에서는 사람의 개입을 최소화하고, 수집한 데이터의 패턴을 찾으려고 시도합니다. 그리고 Neural Network(신경망) & DL(딥러닝)은 기존 Machine Learning(기계 학습)에서 사용하던 방법보다 사람의 개입을 배제할 수..
Read moreWhat is Design Pattern? 디자인 패턴은 소프트웨어 공학에서 일반적인 문제들에 대한 반복적이고 재사용 가능한 해결책을 제공하는 형식화된 방법론입니다. 이러한 패턴들은 개발자들이 특정 상황이나 문제에 대해 효과적으로 대응할 수 있도록 도와줍니다. 디자인 패턴은 주로 객체 지향 소프트웨어 설계에 적용되며, 코드의 재사용성, 유연성, 확장성을 높이는 데 도움이 됩니다. 디자인 패턴은 규칙이 아니다. 언어 종속적이지 않습니다. 프레임 워크 개발에 적용될 수 있습니다. 특정 영역에 종속적이지 않고 일반적으로 활용할 수 있습니다. 좋은 설계에 대한 제안이기도 합니다. 디자인 패턴은 클래스 라이브러리가 아니다. 프로그래밍 언어(C++, Java, Python 등)를 사용할 때 클래스들이 모인 라이브러..
Read more이번에는 Neural Network, 신경망에 데하여 알아보겠습니다. Neural Network(신경망)은 인공지능, 머신러닝에서 사용되는 컴퓨팅 시스템의 방법중 하나입니다. 인간 또는 동물의 뇌에 있는 생물학적 신경망에서 영감을 받아 설계되었습니다. 생물학적 뉴런이 서로간의 신호를 보내는 방식을 모방합니다. Perceptron (퍼셉트론)과 Neural Network(신경망) Perceptron(퍼셉트론)과 Neural Network(신경망)은 공통점이 많습니다. 그래서 다른점을 중점으로 보면서 설명해보겠습니다. 신겸망를 그림으로 나타내면 위의 그림처럼 나옵니다. 맨 왼쪽은 Input Layer(입력층), 중간층은 Hidden layer(은닉층), 오른쪽은 Output Layer(출력층)이라고 합니다...
Read more