신경망,neural_network


AKA 뉴럴 네트워크 neural network, 뉴럴넷 neural net, NN
보통 (여기서) 논의의 대상이 되는 것은 (생물학,biology적 NN인) 동물의 것과 구별하기 위해 인공신경망(ANN)으로 부름.
기계학습,machine_learning 방법 중 하나.

NN의 model은 완전히 새로운 이론으로 만들어진 게 아니라 뇌,brain(특히 그 안의 신경세포(뉴런,neuron) 연결)를 본떠 만든 것.


Sub: // from e2 hopfield, chk
Hopfield network - flat and interconnected
Perceptron network - 복수의 input neurons, 하나의 output neuron
Adaline network - perceptron network와 구조적으로 비슷하지만, have a restricted range of -1 to 1.
Madaline network - Adaline network의 derivative. M은 many. "Many Adalines."

구성:

입력층 input layer
은닉층 hidden layer
출력층 output (layer)
은닉 층의 수가 많은 신경망은 deep_neural_network DNN - 심층학습,deep_learning에 쓰이는
(허명회)

input_layer - 입력,input
hidden_layer
output_layer - 출력,output
layer의 pagename은 뭐로 할까? 후보: 계층 층 ...

Google:universal_approximation_theorem - hidden layer 하나로 임의의 함수를 나타낼 수 있다? chk
Cybenko's theorem WpKo:시벤코_정리


chk, tmp from NoSmoke:NeuralNetwork
{
NN은 뇌,brain를 모방한 것으로, 뇌의 단위인 뉴런,neuron을 모사(mimic, 즉 biomimetics or biomimicry)하는 것에서 시작.
그것이 TLU(threshold_logic_unit)이며 초기의 TLU는 실패라고 결론이 내려졌다. 그러나 1960년대 이후 홉필드 et al.의 연구로부터 Google:multilayered_perceptron을 개발
...
TLU는 input vector
$\vec{X}=\langle x_1,x_2,\cdots,x_n\rangle$
에 대해
$x_1w_1+x_2w_2+\cdots+x_iw_i+\cdots+x_nw_n$
가중합,weighted_sum? (curr at 가중값,weight)을 구하여 이것이 임의로 정해진(? chk) threshold_value보다 크면 1을 출력하고 그렇지 않으면 0을 출력하는 회로를 말한다
즉 related: 지시함수,indicator_function, 아이버슨_대괄호,Iverson_bracket
}


층간 모두 연결되면(fully connected) 효율이 떨어진다. 필수적인 연결만 남겨 둔 sparse NN, efficient NN도 연구되고 있다.

역시 효율과 관련되어,
단순한 일에 뉴런을 지나치게 많이 쓰는 것은 과적합,overfitting, 오버피팅.
반대의 경우인
어려운 일에 지나치게 쉽게 접근해서 제대로 처리하지 못하는 것은 저적합,underfitting, 언더피팅.
https://i.imgur.com/gYfa4BO.png
(적합과 과적합)
https://i.imgur.com/mYJlw8E.png
(적합과 저적합)


1. ANN - Artificial NN

2. CNN - Convolutional NN



topics
LeNet
AlexNet
GoogLeNet
inception module - multiple filters of varying sizes in parallel
naive inception module
bottleneck inception module

kernel
TBD: 여기서 말하는 kernel의 pagename? 커널,kernel or 핵,kernel or weight_kernel ?? ... 가중값,weight
pooling
max pooling
average pooling ... 평균,mean,average RR:풀링,pooling
padding
간단 - 주위에(margin?)

MKLINK
합성곱,convolution


tmp bmks ko
CNN의 역사
https://junklee.tistory.com/111
CNN의 역전파(backpropagation) · ratsgo's blog // 역전파,backpropagation
https://ratsgo.github.io/deep learning/2017/04/05/CNNbackprop/



3. RNN - Recurrent NN

recurrent_neural_network

단기기억(short_term_memory STM)과 연관?
번역,translation에 활용?

NLP에 많이 활용.[1]
단순한 RNN은 장기적 의존관계를 제대로 예측하지 못한다는 문제점이 있음.
LSTM (long-short_term_memory) 모형은 이런 장거리 의존관계 학습에 적합.

GRU (gated_recurrent_unit)도 LSTM과 유사한 아이디어를 통해 장거리 의존관계를 학습함. 구조가 LSTM보다 단순해 계산시간에서 이점이 있음.

tmp videos
MIT 6.S191: Recurrent Neural Networks and Transformers
https://www.youtube.com/watch?v=QvkQ1B3FBqA



4. RvNN - Recursive NN

recursive_neural_network



5. Feedforward NN

feedforward_neural_network

Information is fed forward (no loop) through the network to make predictions
// 예측,prediction



7. graph neural network GNN

8. 각 NN의 사용처

CNN: good for image_recognition
long short-term memory network Google:long short-term memory network : good for speech_recognition

9. tmp links ko

뉴럴 네트워크 디자인 팁(Designing Your Neural Networks) https://junklee.tistory.com/24 (한국어 번역)
뉴럴 네트워크의 일반적인 디자인 원칙(General Design Principles of Neural Network) https://junklee.tistory.com/20

Machine learning 스터디 (18) Neural Network Introduction - README (2015)
http://sanghyukchun.github.io/74/
{
다루는내용대충요약, del ok
// Model of NN 문단
뉴런,neuron들이 노드,node이고 시냅스,synapseedge네트워크,network(그래프,graph, esp 유향그래프,directed_graph)로 model할 수 있고... edge마다 가중값,weight이 있다. 그래서 정보전파,information_propagation가 한 방향으로 고정되어 있다. 만약 undirected edge라면 information propagation이 recursive하게 일어나서 복잡해진다 - 이것은 RNN recurrent_neural_network(curr at 신경망,neural_network#s-3)
여기선 가장 간단한 multi layer perceptron (MLP) { directed_simple_graph 구조이며, 같은 layer 안에서는 연결되지 않았다. 이 경우 information_propagation이 forward방향으로만 일어나므로 feedforward_network라고 부른다 } 만 다룬다
(암튼,) 일반적인 NN에서는 (다음 neuron의 활성화,activation여부를 판정??) 활성화함수,activation_function가 있으며... (skip)
// Inference via Neural Network 문단
그래서 그런 방식으로 추론,inference(sub: 분류,classification etc.)을 한다.
// Backpropagation Algorithm 문단
그렇다면 가중값,weight parameter를 어떻게 찾는가? 활성화함수가 nonlinear이고 layer들로 얽혀있어서 이건 non-convex optimization이다(opp. 볼록최적화,convex_optimization? chk) - 그래서 일반적으로 global_optimum을 찾는 것은 불가능하다. 보통 기울기하강,gradient_descent(curr at 기울기,gradient#s-1) 방법을 써서 적당한 값을 찾는다.
parameter를 update하기 위해 역전파,backpropagation(writing) algorithm을 주로 쓴다. 이건 NN에서 기울기하강,gradient_descent연쇄법칙,chain_rule을 써서 단순화시킨 것에 지나지 않는다. ... 마지막 decision_layer에서 (우리가 실제로 원하는) target output과 (현재 네트워크가 만든) estimated output끼리의 손실함수,loss_function를 계산하여 그 값을 최소화,minimization하는 방식을 쓴다.
... 이후 기울기하강,gradient_descent 등등 언급(skipped, or 해당페이지에 적음)
}

10. tmp; video test


11. videos en

Why Neural Networks can learn (almost) anything - YouTube
https://www.youtube.com/watch?v=0QczhVg5HaI
ALSOIN 학습,learning > 기계학습,machine_learning
NN(ANN) can approximate anything - 'universal function approximator'. // 근사,approximation
rel. universal_approximation_theorem aka Cybenko_theorem { WpKo:시벤코_정리 WpEn:Universal_approximation_theorem ... Google:universal_approximation_theorem }

신경망이란 무엇인가? | 1장.딥러닝에 관하여 - YouTube
https://www.youtube.com/watch?v=aircAruvnKk

Building a neural network FROM SCRATCH (no Tensorflow/Pytorch, just numpy & math) - YouTube
https://www.youtube.com/watch?v=w8yWXqWQYmU

12. MKLINK

역전파,backpropagation
오차역전파,error_backpropagation
이건 신경망을 개선하기 위해 오차함수(오차함수,error_function 말고... 손실함수,loss_function(정답에 대한 오류를 숫자로 나타냄, 오답에 가까우면 큰 수를, 정답에 가까울수록 작은 수를 돌려줌))를 최소화,minimization하는?

계산그래프,computational_graph - NN을 나타낼(시각화할) 때 저걸 사용할 수 있음


Ref. 그림 from 브레인 이미테이션