본문 바로가기

개인공부

C++::Artificial Neural Network(인공신경망)

반응형

인공신경망이란?인공신경망이란?

인공신경망이란?

 

인간은 뇌는 수많은 뉴런으로 구성되고 뉴런과 뉴런사이에서는 시냅스의 결합으로 네트워크를 구성하게된다.

인공신경망은 이러한 뉴런에 영감을 얻어 만들어 졌다.

 

 

 

위쪽은 사람의 뇌를 이루는 뉴런이라는 단위이고 아래쪽은 인공 뉴런을 모형화 한것이다.

입력 x값과 b값을 더한값은 sigam 값이 되고 Neuron 안쪽의 특정 함수를 지나 출력 y 값이 구해진다

인공신경망이 서로 얽혀서 복잡한 구조를 이루어진다.

 

Neuron 안쪽은 sigma 라는 값과 함수로 이루어지는데 sigma는 W*X + b 로 이루어지는데

weight(가중치) 와 biass 의 조합으로 이루어진다

 

 

이제는 C++로 간단하게 인공 신경망을 구성해 보도록 하겠다.

 

 

#include <iostream>
using namespace std;

#define MAX2(a, b) (a) > (b) ? (a) : (b)

class Neuron
{
	public:
		double w_; //weight of one input
		double b_; // bias
		
		double getActivation(const double& x)
		{
			// for linear or identity activation functions
			return x;
			
			// for ReLU activation functions
			//return MAX2(0.0,x);
		}
		double feedForward(const double& input)
		{
			// output y = f(\sigma)
			// \sigma = w_ * input X + b
			//for multipl inputs,
			// \sigma = w0_ * x0_ + w1_ * x1 + ... + b
			
			const double sigma = w_ * input + b_;
			
			return getActivation(sigma);
		}
};

int main()
{	
	Neuron my_neuron;
	my_neuron.w_ = 2.0;
	my_neuron.b_ = 1.0;
	std::cout << "Input = 1.0" << my_neuron.feedForward(1.0)<< std::endl;
	std::cout << "Input = 2.0" << my_neuron.feedForward(2.0)<< std::endl;
	std::cout << "Input = 3.0" << my_neuron.feedForward(3.0)<< std::endl;
}

 

 

 

 

 

지금은 가중치 W값과 바이어스값 b값을 내가주었지만 딥러닝은 대량의

입력 데이터와 출력 데이터를 주어서 값을 예측할수 있는 알고리즘이다.

 

 

반응형

'개인공부' 카테고리의 다른 글

python::tensorflow  (0) 2020.07.04
C++::BackPropagation (역전파)  (0) 2020.07.04
안드로이드 : 계산기 어플 만들기  (0) 2020.07.04
안드로이드 : 시작하기  (0) 2020.07.04
web 자주사용하는 태그들  (0) 2020.05.25