데이터

피드포워드 네트워크, 오차역전파, 기울기 소실 문제, 뉴럴 네트워크 등 인공지능 관련 개념 정리

파카잇 2023. 3. 30. 15:48

인간의 두뇌와 유사한 동작원리를 가진 컴퓨터 학습 기술인 Neural Network(뉴럴 네트워크)는 딥 러닝의 핵심 기술로, 인공지능 분야에서 중요한 역할을 하고 있습니다.
Neural Network은 인간의 두뇌 구조와 유사하게 수많은 뉴런과 시냅스로 구성되어 있습니다.
이 네트워크는 입력층, 은닉층, 출력층으로 구성되어 있으며, 입력층에서 입력되는 데이터는 은닉층을 거쳐 출력층으로 전달되어 처리됩니다.
뉴럴 네트워크는 학습을 통해 데이터의 패턴, 구조, 특성 등을 스스로 학습하여 추론 능력을 강화합니다.
이를 위해 일반적으로 지도학습, 비지도학습, 강화학습 등의 방법을 채택합니다.
뉴럴 네트워크는 숫자, 이미지, 음성 등 다양한 형태의 데이터를 처리하는 데 적합합니다.
예를 들어, 준비된 데이터셋을 활용하여 인공지능 기반의 자동차 번호판 판독 프로그램을 만들 경우, 이미지 데이터에 대한 정보를 인식하는 능력을 갖춘 뉴럴 네트워크가 유용하게 사용될 수 있습니다.
하지만 뉴럴 네트워크가 모든 문제에 적용되지는 않습니다.
딥 러닝 테크닉 중 하나인 CNN(Convolutional Neural Network)은 컴퓨터 비전 분야에서 높은 성능을 발휘하지만, 자료의 양과 종류에 따라 다양한 네트워크 모델을 디자인해야 하는 등 설계와 튜닝 등 여러 가지 문제점이 있습니다.
Neural Network를 이용한 인공지능 기술은 지금까지 알려진 대부분의 기술보다 높은 정확도와 성능을 보여주고 있습니다.
현재는 다양한 산업 분야에서 활용되고 있으며, 앞으로 더 많은 분야에서 인공지능 기술의 중심 역할을 할 것으로 예상됩니다.

Feedforward neural network는 인공신경망의 한 유형으로, 입력(input)과 출력(output) 사이에 여러개의 은닉층(hidden layer)을 포함하는 다층 퍼셉트론(multi-layer perceptron)이다.
이러한 네트워크는 신경망에서 가장 널리 사용되며, 수많은 분야에서 이미 사용되고 있다.
사실, 대다수의 딥러닝 알고리즘은 이 모델의 변형도 아닌 이 모델에 기초하여 개발되었다.
feedforward network는 정보의 흐름이 한 방향으로만 움직인다는 점에서 이름이 유래되었으며, 입력층으로부터 입력값이 들어오면 중간의 은닉층을 통과하여 출력층으로 전달되는 과정을 따른다.
은닉층은 시스템의 학습능력을 향상시키는 역할을 담당하며, 이 층의 각 노드는 이전 층의 모든 노드와 연결되어 가중치를 가진다.
이와 같은 구조 때문에, feedforward neural network는 튜닝해야 할 매개변수가 많지 않다는 장점이 있다.
feedforward network는 분류 문제(classification problem)를 해결하는 데에 많이 사용된다.
예를 들어, 이미지를 입력으로 받아서 어떤 물체가 있는지 분류하는 이미지 분류 문제에서는 마지막 출력층이 소프트맥스(softmax) 활성화 함수를 사용하여 각 클래스에 대한 확률을 출력하도록 설계된다.
또한, 회귀(regression) 문제를 풀 때도 사용될 수 있다.
예를 들어, 데이터셋의 입력과 출력 사이의 관계를 학습하여 새로운 예측값을 생성하기 위해 feedforward neural network를 사용할 수 있다.
feedforward network는 기본적으로 MLP알고리즘이며, 순방향 신경망, 순차 신경망 등 여러가지 표현으로 불린다.
이 모델은 간단하면서도 유연하며, 다양한 분야에서 사용될 수 있다는 장점을 가지고 있다.
하지만, 연속적인 데이터를 다루는 시계열 문제나 이미지, 음성과 같은 대규모 데이터셋을 처리하는 경우 이 모델의 성능이 약할 수 있기 때문에, 이러한 문제에 대한 대안 알고리즘을 사용하는 것이 보편적이다.

Backpropagation은 인공 신경망에서 가중치를 조정하기 위한 학습 알고리즘입니다.
이 알고리즘은 먼저 신경망을 통과하는 입력 데이터의 결과와 정답을 비교하여 오차를 계산합니다.
그 다음, 이 오차를 역전파하여 출력층에서 입력층으로 거슬러 올라가며 각 가중치가 오차에 얼마나 기여했는지를 계산합니다.
이를 통해 각 가중치의 기여도를 알아내고, 이를 수정하여 더 나은 결과를 예측하도록 만듭니다.
Backpropagation은 크게 두 단계로 나눌 수 있습니다.
먼저, Feedforward 단계에서 신경망의 입력 데이터를 순방향으로 전파하여 출력값을 계산합니다.
이 과정은 계층별로 가중치와 편향을 곱하고, 시그모이드 함수 등의 활성화 함수를 거쳐 다음 계층으로 전달합니다.
이렇게 출력층까지 전파된 결과와 정답 사이의 오차를 계산합니다.
두번째, Backpropagation 단계에서는 오차를 출력층에서 입력층까지 거슬러 올라가며 각 가중치가 오차에 얼마나 기여했는지를 계산합니다.
이때, Chain Rule을 이용하여 오차를 가중치와 편향으로 편미분하여 계산합니다.
이를 이용하여 얻어진 기울기를 이용하여 가중치를 수정합니다.
이를 여러 번 반복하여 최적의 가중치를 찾게 됩니다.
Backpropagation 학습 알고리즘은 인공 신경망에서 다양한 문제를 해결하는 데에 활용됩니다.
이러한 학습 알고리즘을 이해하고 구현하는 것은 인공지능 분야에서 매우 중요한 역할을 합니다.

Gradient vanishing problem은 인공 신경망에서 발생하는 문제 중 하나로서, 깊은 신경망에서 역전파 알고리즘이 제대로 작동하지 않아 학습이 제대로 이루어지지 않는 현상을 말합니다.
이러한 문제는 오랫동안 딥러닝이 발전하지 않았던 이유 중 하나였습니다.
하지만 2015년 이후로 발표된 논문들에서는 다양한 방법들이 제안되어 gradient vanishing problem을 해결하고, 더욱 깊은 신경망에서 학습을 가능케 했습니다.
Gradient vanishing problem은 역전파 알고리즘이 주어진 입력에 대해 예측한 출력과 실제값의 차이의 기울기인 gradient를 계산하면서 발생합니다.
기울기는 출력층에서부터 입력층으로 전달되는데, 이때 중간층에서 출력층까지 전달되면서 반복적으로 곱해지기 때문에 0에 가까워질 수 있습니다.
이러한 경우 연쇄 법칙(chain rule)에 의해 이전 레이어에 대한 기울기 계산이 어려워지므로, 해당 레이어는 학습이 제대로 이루어지지 않습니다.
이 문제는 특히 활성화 함수로 sigmoid나 tanh와 같이 기울기가 작은 함수를 사용할 때 더욱 심각해집니다.
이러한 gradient vanishing problem을 해결하기 위한 방법으로는 He 초기화와 같은 올바른 초기값 설정 및 ReLU와 같이 기울기가 큰 활성화 함수 사용하는 것, 그리고 Batch Normalization, ResNet 등의 방법이 있습니다.
이러한 방법들은 gradient vanishing problem을 해결하고, 우수한 성능을 내는 딥러닝 모델을 만드는 데에 큰 역할을 합니다.