신경망

menu icon

신경망

신경망은 인간 두뇌의 작동 방식을 반영함으로써 컴퓨터 프로그램이 패턴을 인식하고 AI, 머신 러닝 및 딥 러닝 분야의 일반적인 문제점을 해결할 수 있도록 지원합니다.

신경망이란?

인공 신경망(ANN) 또는 시뮬레이션 신경망(SNN)이라고도 하는 신경망은 머신 러닝의 서브세트이며, 딥 러닝 알고리즘의 핵심입니다. 그 이름과 구조는 인간의 두뇌로부터 영감을 받은 것이며, 생물학적 뉴런이 서로 간에 신호를 보내는 방식을 모방합니다.

인공 신경망(ANN)은 하나의 입력 계층, 하나 이상의 은닉 계층 및 하나의 출력 계층을 포함하는 노드 계층들로 구성되어 있습니다. 각 노드 또는 인공 뉴런은 다른 노드에 연결되며, 연관된 가중치와 임계값을 갖습니다. 개별 노드의 출력이 지정된 임계값을 초과하면, 해당 노드가 활성화되어 네트워크의 다음 계층으로 데이터를 전송합니다. 그렇지 않으면, 네트워크의 다음 계층으로 데이터가 전달되지 않습니다.

피드포워드 신경망의 입력 계층, 은닉 계층 및 출력 계층의 시각적 다이어그램

신경망은 훈련 데이터에 의존하여 학습을 수행하고, 시간이 지나면서 자체 정확도를 개선합니다. 그러나 일단 이러한 학습 알고리즘이 고도의 정확도를 얻기 위해 미세 조정된 경우, 이는 컴퓨터 사이언스와 인공지능의 강력한 툴이 됨으로써 우리는 이를 통해 고속으로 데이터를 분류 및 클러스터링할 수 있습니다. 음성 인식이나 영상 인식의 작업은 몇 분 정도 소요될 수 있으며, 이는 몇 시간씩 걸리는 인간 전문가의 수동적인 식별과는 비교가 됩니다. 가장 널리 알려진 신경망 중 하나로 Google의 검색 알고리즘을 들 수 있습니다.

신경망의 작동 방법

각각의 개별 노드를 입력 데이터, 가중치, 바이어스(또는 임계값) 및 출력으로 구성된 자체 선형 회귀 모델로 생각할 수 있습니다. 공식은 다음과 유사합니다.

합계를 판별하는 데 사용되는 수학 공식

∑wixi + bias = w1x1 + w2x2 + w3x3 + bias

출력을 판별하는 데 사용되는 수학 공식

output = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0

일단 입력 계층이 판별되면, 가중치가 지정됩니다. 이러한 가중치는 제공된 변수의 중요도 판별에 도움이 되며, 보다 클수록 기타 입력과 비교하여 출력에 보다 현저하게 기여합니다. 그리고 모든 입력에 개별 가중치를 곱한 후에 합계가 산정됩니다. 그 이후에 출력은 활성화 함수를 통해 전달되며 이는 출력을 판별합니다. 해당 출력이 주어진 임계값을 초과하는 경우, 이는 노드를 "실행"(또는 활성화)함으로써 데이터를 네트워크의 다음 계층으로 전달합니다. 결과적으로 한 노드의 출력은 다음 노드의 입력이 됩니다. 한 계층에서 다음 계층으로 데이터를 전달하는 이러한 프로세스는 이 신경망을 피드포워드(feedforward) 네트워크로서 정의합니다.

하나의 단일 노드가 2진 값을 사용하는 것처럼 보일 수 있는 항목을 구분합니다. 우리는 이 개념을 서핑하러 갈지 여부(예: 1, 아니요: 0)와 같은 보다 실질적인 사례에 적용할 수 있습니다. 서핑하러 갈지 여부의 의사결정은 우리의 예측된 결과 혹은 y-hat입니다. 의사결정에 영향을 미치는 세 가지 요인이 있다고 가정하겠습니다.

  1. 파도가 서핑하기에 적절한가요? (예: 1, 아니요: 0)
  2. 라인업은 비어 있나요? (예: 1, 아니요: 0)
  3. 최근에 상어의 공격이 있었나요? (예: 0, 아니요: 1)

그런 다음, 우리에게 다음 입력을 제공하여 다음을 가정합니다.

  • X1 = 1, 파도가 일렁이므로
  • X2 = 0, 군중들이 없으므로
  • X3 = 1, 최근에 상어 공격이 없었으므로

이제 일부 가중치를 지정하여 중요도를 판별해야 합니다. 가중치가 더 클수록 특정 변수들이 의사결정이나 최종 결과에 더 중요하다는 것을 의미합니다.

  • W = 5, 커다란 놀이 자주 발생하지 않으므로
  • W2 = 2, 군중들에 익숙하므로
  • W3 = 4. 상어에 대한 두려움이 있으므로

마지막으로 우리는 또한 3의 임계값을 가정하며, 이는 –3의 바이어스 값으로 변환됩니다. 모든 다양한 입력을 통해, 우리는 원하는 출력을 얻을 수 있도록 수식에 값을 플러그인하기 시작할 수 있습니다.

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

이 섹션의 처음부터 활성화 기능을 사용하는 경우, 6이 0보다 크므로 우리는 이 노드의 출력이 1임을 판별할 수 있습니다. 이 경우에는 서핑을 하러 갈 것입니다. 하지만 가중치나 임계값을 조정하는 경우 우리는 모델과 다른 결과를 얻을 수 있습니다. 위의 예에서와 같이 하나의 의사결정을 관찰하는 경우, 우리는 이전 의사결정이나 계층의 출력에 따라 신경망이 점점 더 복잡한 의사결정을 어떻게 내릴 수 있는지를 확인할 수 있습니다.

위의 예에서, 우리는 퍼셉트론(perceptron)을 사용하여 여기서 펼쳐지는 수학의 일부를 예시했습니다. 하지만 신경망은 0과 1사이의 값을 갖는 것으로 구분되는 시그모이드 뉴런(sigmoid neuron)을 활용합니다. 신경망이 의사결정 트리와 유사하게 작동하므로, 0과 1 사이의 x 값을 지닌 한 노드에서 다른 노드로 데이터를 캐스케이딩하면 해당 노드의 출력에 대해 단일 변수의 해당 변경사항의 영향이 감소됩니다. 이에 따라 신경망의 출력도 감소됩니다.

이미지 인식이나 분류와 같은 신경망의 보다 실용적인 유스케이스에 대해 생각하기 시작하면서, 우리는 알고리즘의 훈련을 위해 감독형 러닝이나 레이블형 데이터 세트를 활용합니다. 모델을 훈련하면서, 우리는 비용(또는 손실) 함수를 사용하여 해당 정확도를 평가하고자 합니다. 이를 통상적으로 MSE(Mean Squared Error)라고도 합니다. 아래의 방정식에서,

  • i는 샘플의 인덱스를 나타냅니다.
  • y-hat은 예측된 결과입니다.
  • y는 실제 값입니다. 그리고
  • m은 샘플의 수입니다.
비용 함수를 판별하는 데 사용되는 수학 공식

𝐶𝑜𝑠𝑡 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

최종적인 목표는 비용 기능을 최소화함으로써 주어진 관찰에 대한 적합도의 정확성을 보장하는 것입니다. 모델에서 가중치와 바이어스를 조정하므로, 이는 비용 함수와 강화 학습을 사용하여 융합점 또는 극솟값에 도달합니다. 알고리즘이 가중치를 조정하는 프로세스는 기울기 강하를 통해서 이루어지며, 따라서 모델은 오류 감소(또는 비용 함수의 최소화)를 위해 취해야 할 방향을 판별할 수 있습니다. 각각의 훈련 사례에서, 모델의 파라미터는 점진적으로 최소값으로 수렴하도록 조정됩니다.

융합점을 예시하는 선 그래프

신경망과 관련된 정량적 개념의 상세 설명은 이 IBM Developer 기사를 참조하세요.

대부분의 딥 신경망은 입력에서 출력으로 한 방향으로만 이동되는 피드포워드(feedforward)입니다. 그러나 역전달을 통해 모델을 훈련할 수도 있습니다. 이는 출력에서 입력으로 반대 방향으로 이동하는 것을 말합니다. 역전달을 사용하면 각각의 뉴런과 연관된 오류의 계산과 속성화가 가능하므로, 우리는 모델의 매개변수를 적절하게 조정하고 맞출 수 있습니다.

신경망의 유형

신경망은 각각 서로 다른 용도에 사용되는 다양한 유형으로 분류될 수 있습니다. 비록 포괄적인 유형 목록이 아니지만, 아래는 일반적인 유스케이스에서 접할 수 있는 가장 일반적인 유형의 신경망을 대표적으로 예시합니다.

퍼셉트론(perceptron)은 1958년에 Frank Rosenblatt이 만든 가장 오래된 신경망입니다. 이는 하나의 뉴런을 보유하며, 신경망의 가장 단순한 형태입니다.

선과 파란색 원을 사용한 퍼셉트론의 단순 다이어그램

피드포워드 신경망 또는 MLP(multi-layer perceptron)은 이 기사에서 집중적으로 다루고 있는 신경망입니다. 이는 하나의 입력 계층, 하나 이상의 은닉 계층 및 하나의 출력 계층으로 구성됩니다. 이러한 신경망을 흔히 MLP라고도 부르지만, 대부분의 실세계 문제가 비선형이기 때문에 이는 실제로 퍼셉트론이 아닌 시그모이드 뉴런으로 구성되어 있다는 점을 유념하세요. 데이터는 일반적으로 이러한 모델의 훈련을 위해 이에 공급되며, 이는 컴퓨터 비전, 자연어 처리 및 기타 신경망의 기반입니다.

CNN(Convolutional neural network)는 피드포워드 네트워크와 유사하지만, 이는 일반적으로 이미지 인식, 패턴 인식 및/또는 컴퓨터 비전에 활용됩니다. 이러한 네트워크는 선형 대수, 특히 행렬 곱셈(matrix multiplication)의 원리를 이용하여 이미지 내의 패턴을 식별합니다.

RNN(Recurrent Neural Network)은 자신의 피드백 루프로서 식별됩니다. 이러한 러닝 알고리즘은 시계열 데이터를 사용하여 주가 예측이나 판매 예측 등 미래의 결과에 대한 예측을 수행할 경우에 주로 활용됩니다.

신경망 vs. 딥 러닝

딥 러닝과 신경망은 대화에서 종종 상호교환적으로 사용되며 혼동될 수 있습니다. 결과적으로, 딥 러닝의 "딥"은 단지 신경망에서 계층의 깊이를 의미함을 유념해야 합니다. 입력과 출력을 포함할 수 있는 세 개 이상의 계층으로 구성된 신경망은 딥 러닝 알고리즘으로 간주될 수 있습니다. 단지 2개 또는 3개의 계층만을 갖는 신경망은 그저 기본 신경망에 불과합니다.

머신 러닝 등 인공지능의 다른 형태와 신경망 간의 차이점에 대해 자세히 알아보려면 블로그 포스트 "AI 대 머신 러닝 vs. 딥 러닝 대 신경망: 차이점"을 참조하세요.

신경망의 역사

신경망의 역사는 대부분의 사람들이 생각하는 것보다 장구합니다. "생각하는 기계"라는 개념은 고대 그리스인으로까지 거슬러 올라갈 수 있지만, 우리는 수년에 걸쳐 인기가 식었다가 흘렀던 신경망에 대한 사고의 진화를 이끈 주요 사건에 초점을 맞출 것입니다.

1943년: Warren S. McCulloch 및 Walter Pitts는 "신경 활동에 내재된 사고의 논리적 계산법(PDF, 1MB)(IBM 외부 링크)을 출간했습니다. 이 연구 보고서에서는 인간의 두뇌가 연결된 뇌 세포나 뉴런을 통해 복잡한 패턴을 어떻게 생성하는지를 파악하고자 했습니다. 이 작업에서 도출된 중요 아이디어 중 하나는 부울 논리(예: 0/1 또는 참/거짓 선언)에 대해 2진 임계값의 뉴런을 비교하는 것이었습니다.

1958년: Frank Rosenblatt는 자신의 연구 보고서인 퍼셉트론: 두뇌의 정보 저장과 구성에 대한 확률 모델(PDF, 1.6MB)(IBM 외부 링크)에서 기술한 퍼셉트론(perceptron)의 개발로 유명세를 얻었습니다. 그는 방정식에 가중치를 도입함으로써 McCulloch 및 Pitt의 연구 결과를 한 단계 업그레이드했습니다. IBM 704를 활용함으로써, Rosenblatt는 왼쪽에 표시된 카드와 오른쪽에 표시된 카드를 구별하는 방법을 컴퓨터에게 학습시킬 수 있었습니다.

1974년: 많은 연구자들이 역전달이라는 아이디어에 기여한 반면, Paul Werbos는 자신의 PhD 논문(PDF, 8.1MB)(IBM 외부 링크)에서 신경망 내의 이의 적용법을 알렸던 최초의 미국인이었습니다.

1989년: Yann LeCun는 역전달에서 제한조건의 사용과 신경망 아키텍처로의 통합이 알고리즘의 훈련에 사용될 수 있는 방법을 예시한 논문(PDF, 5.7MB)(IBM 외부 링크)을 발표했습니다. 이 연구에서는 신경망을 활용하여 미국 우편 서비스에서 제공한 손글씨 우편번호 코드를 인식하는 데 성공했습니다.

신경망 및 IBM Cloud

지금까지 수십 년 동안, IBM은 IBM Watson의 개발과 발전으로 부각되는 AI 기술과 신경망을 개발에 있어서 선구자의 역할을 수행해 왔습니다. Watson은 이제 AI 채택과 구현에 대해 검증된 계층형 접근 방법을 사용하여 자사 시스템에 고급 자연어 처리와 딥 러닝 기술을 적용하고자 하는 기업들을 위한 신뢰할 수 있는 솔루션입니다.

Watson은 Apache UIMA(Unstructured Information Management Architecture) 프레임워크와 IBM의 DeepQA 소프트웨어를 사용하여 애플리케이션에 사용할 수 있는 강력한 딥 러닝 기능을 구축합니다. IBM Watson Studio 등의 툴을 활용함으로써, 기업은 클라우드에서 모델을 배치하고 실행하는 동안 오픈 소스 AI 프로젝트를 완벽하게 프로덕션화할 수 있습니다.

딥 러닝 기술의 시작 방법에 대한 자세한 정보는 IBM Watson Studio딥 러닝 서비스를 참조하세요.

IBMid로 등록하고 IBM Cloud 계정을 생성하세요.