2020. 2. 6. 00:57 ㆍ개발 이야기/머신러닝(딥러닝)
컴퓨터는 계산능력이 굉장히 빠른데요 사람의 뇌, 동물의 뇌는 컴퓨터에 비해 계산능력은 떨어지지만 훨씬 더 많은 광범위한 능력을 가지고 있습니다.
컴퓨터는 명확한 체계에 의해 정확히 수행되고, 냉철한 연산만 존재하나 동물의 뇌는 컴퓨터 보단 느리지만 신호를 병렬적으로 처리하며, 그 특성 중 하나는 바로 불명확성 입니다.
생물학적 뇌의 기본단위인 뉴런(신경세포 nueron)을 보겠습니다.
인간의 뇌는 약 1천억개의 뉴런을 가지고 있고 초파리는 겨우 10만개 정도의 뉴런을 갖고 있지만 잘 날아다니고, 음식을 찾아 섭취하고 위험을 피하는 등 충분히 복잡한 일을 수행할 수 있습니다.
뇌는 컴퓨터보다 훨씬 느리고 상대적으로 적은 연산을 함에도 상당한 능력을 발휘하는것에 대해 많은 연구가 진척되었는데요
뉴런은 전기 입력을 받아 또 다른 전기신호를 발생시킵니다. 이 뉴런을 본따서 만든 것이 딥러닝의 퍼셉트론(Perceptron)입니다
분류(classify), 예측자(predictor)에서 입력을 받아 어떤 처리를 해 결과를 출력하는 것과 매우 유사해 보이는데요
과학자들이 관찰했을 때 뉴런은 입력을 받았을 때 즉시 반응하는게 아니라 어떤 입력이 누적되어 어떤 수준으로 커진 경우에 출력을 하는데 이 커진 기준 분계점(threshold)에 도달해야 출력이 발생하는 것입니다.
이렇게 입력 신호를 받아 분계점을 넘어서는 경우 출력 신호를 생성해주는 함수를 활성화 함수(activation function)이라고 하며, 활성화 함수 중 가장 단순한 형태인 계단함수(step function)는 하기와 같습니다.
특정 분계점에 이르러 출력을 발생시키는 현상을 일컬어 뉴런이 작동한다(fire)라고 합니다. 계단함수를 개선한 함수는 S자 모양의 함수 시그모이드 함수(sigmoid funtion)라고 합니다.
대자연의 어떤 것들은 계단함수처러 딱딱한 것이 아닌 시그모이드 함수처럼 유연한 구조를 가지고 있습니다.
뉴런은 여러 계층(layer)에 걸처 위치되고 각각의 뉴런은 직전 계층과 직후 계정에 있는 모든 뉴런들과 상호 연결되어 있는 식으로 표현하면 됩니다.
왼쪽부터 1계층, 가운데 2계층, 3계층 각각의 인공 뉴런들을 노드(node)라고 합니다. 노드 간에 연결 강도를 조정해 나가는데 연결에 적용되는 것이 가중치(weight)라고 합니다.
1계층은 입력 계층(input layer)
3계층은 출력 계정(output layer)
2계층은 은닉 계증(hidden layer)
초기 입력 신호화 가중치를 조합하여 마지막 계층 족으로 전달(feed forward) 하는 것을 전파법(순전파) forward propagation 이라고 합니다.
반대로 오차를 직전 계층으로 역으로 전파할 때도 가중치를 이용합니다. 이를 역전파(backpropagation)이라고 합니다.
가중치 계산에 있어 우리는 많은 어려움이 있습니다. 이럴때 가장 도움되는 것은 휴리스틱(heuristics) 알고리즘입니다
바로 찍기. 인데요
찍어서 결과를 보고 이 결과를 보면서 점점 답을 찾아가는 것 중 가장 유명한 방법은 경사하강법(gradient descent)입니다.
경사 하강법은 무엇일까요? 이 방법은 바로 코앞에 내리막 길 중에 가장 경사도가 높은 곳으로 내려가 가장 빨리 아래로 내려가는 방법을 찾는 방법입니다.
그래프를 보면 이렇습니다 빨간색이 기울기를 나타내는데요 완만해질때까지 값을 변경해가면서 조정을 하는 방법입니다. 하지만! 잘못된 웅덩이에 빠졌을 때 이를 감지하기 위해 global_minimum 변수를 두는데요!
웅덩이에 빠져 이 변수보다 높은 곳에 있는데 기울기가 완만하다면 빠져나와야겠죠 ?
이런 방법론은 #1 인공신경망 동작 원리 - 예측자, 분류자 해당 글을 참고해주시구요!
이런 알고리즘, 방법론을 통해 딥러닝을 진행해 나가는 것입니다. 많은 방법론, 알고리즘들이 더 효율적으로 개선되어 출시되었고 개발자들은 해당 api를 가져다가 사용만 해도 되는 시점이 되었습니다.틈틈히 사용하는 알고리즘에 대해 설명하고 토론할 수 있었으면 좋겠습니다.
차후에는 MLP, LSTM 신경망 딥러닝 알고리즘에 대해 다뤄보겠습니다.
'개발 이야기 > 머신러닝(딥러닝)' 카테고리의 다른 글
# 데이터 분석&머신러닝 플랫폼 - RapidMiner(래피드마이너) (0) | 2020.04.22 |
---|---|
#3 인공신경망 동작 원리 - MLP(Multilayer Perceptron) (4) | 2020.02.12 |
#1 인공신경망 동작 원리 - 예측자, 분류자 (0) | 2020.02.05 |
#6 음성인식 노이즈 제거2 (0) | 2019.10.11 |
#Back to basic 제로스(zeroth) 프로젝트 스크립트 분석 및 인식률 고도화 방안 (2) | 2019.10.07 |