심층 신경망(DNN)은 컴퓨터를 훈련시켜 기존 프로그래밍 기법으로는 매우 어려운 작업을 수행할 수 있도록 하는 머신 러닝 기법입니다. 신경망 알고리즘은 인간의 뇌와 그 기능에서 영감을 얻었으며, 인간의 마음처럼 미리 설정된 규칙 목록을 따르는 것뿐만 아니라 이전의 반복과 경험을 바탕으로 해결책을 예측하고 결론을 도출하여 작동하도록 설계되었습니다.
신경망 아키텍처란 무엇인가요?
신경망은 다른 계층으로부터 입력을 받아 최종 결과에 도달할 때까지 출력을 생성하는 여러 계층의 노드로 구성됩니다. 신경망에는 숨겨진 계층이 얼마든지 포함될 수 있으며, 네트워크에 노드 계층이 많을수록 복잡도가 높아집니다. 다음은 다양한 신경망 아키텍처입니다:
- 기존의 신경망은 일반적으로 2~3개의 숨겨진 레이어로 구성됩니다;
- 최대 150개의 숨겨진 레이어를 가질 수 있는 딥러닝 네트워크입니다;
신경망과 심층 신경망의 차이점은 무엇인가요?
심층 신경망은 "단순한" 신경 시스템보다 훨씬 더 복잡한 시스템입니다. 신경망은 체스 게임에 비유할 수 있으며 알고리즘에 따라 작동합니다. 상대방의 움직임과 행동에 따라 다른 전술이 제안됩니다. 이 신경망은 프로그래머의 입력에 따라 제한됩니다:
- 체스 말의 이동 방식;
- 체스판의 크기입니다;
- 상황에 따라 다른 전략이 필요합니다;
입력 데이터를 넘어 이전 경험으로부터 학습할 수 있는 신경망은 심층 신경망이 됩니다.
예를 들어, 같은 컴퓨터에서 신경망을 훈련시킨 다음 다른 사람과 대국을 하면서 학습하게 할 수 있습니다. 신경망이 다른 플레이어로부터 학습할 수 있다면 체스 고수라도 딥 뉴럴 네트워크를 이기는 것이 어려워지거나 말 그대로 불가능해질 수 있습니다.
심층 신경망은 음성 명령을 인식하고, 음성을 식별하고, 소리와 그래픽을 인식하는 등 신경망보다 훨씬 더 많은 일을 할 수 있습니다. 딥 러닝 네트워크는 문제를 해결하기 위해 알고리즘과 함께 '빅 데이터'를 활용하며, 이러한 딥 뉴럴 네트워크는 사람의 입력이 제한적이거나 전혀 없이도 문제를 해결할 수 있습니다.
심층 신경망의 작업을 시각화하는 방법은 무엇인가요?
심층 신경망의 프로세스는 예시를 통해 가장 잘 이해할 수 있습니다. 수십만 장의 이미지가 있고 그 중 일부에 개가 포함되어 있으며 사진 속 개를 인식하는 컴퓨터 프로그램을 작성하기로 결정했다고 가정해 보겠습니다.
두 가지 선택지가 있습니다. 개를 명시적으로 식별하는 프로그램을 작성하거나 개를 식별하는 방법을 "학습"하는 프로그램을 작성할 수 있습니다.
현명하지 않게도 전자를 시도하기로 결정합니다.
기존 프로그래밍 기법을 사용하는 것은 시간이 오래 걸리고 어렵고 결과가 항상 정확하지 않습니다.
개 사진을 식별하기 위해 "만약" 및 "그러면" 문을 사용하여 소프트웨어 프로그램을 만들면 털, 플로피 귀, 꼬리 등 개와 같은 속성을 식별할 때마다 개를 보고 있을 확률이 높아지도록 프로그래밍됩니다. 그러나 이러한 유형의 신경 시스템은 여러 수준에서 어렵습니다:
예를 들어, 픽셀 덩어리가 꼬리를 닮았다면 개를 보고 있을 가능성이 높아집니다. 심층 신경망은 개와 같은 속성에 해당하는 픽셀 그룹을 식별해야 합니다. 이 작업을 수행하더라도 알고리즘에 문제가 있을 수 있습니다:
- 사진에 찍힌 많은 물체, 특히 비슷한 동물의 사진은 개와 같은 속성을 공유합니다. 규칙을 추가해야 합니다;
- 때로는 속성이 존재하지만 가려져 있을 수도 있습니다. 알고리즘이 이를 포착하지 못하기 때문입니다;
- 때로는 다른 속성이 존재할 때만 속성이 중요할 수 있습니다. 더 많은 의사 결정 규칙이 필요할 것입니다;
분류에 실패했습니다. 이러한 특수한 경우를 처리하는 데 필요한 모든 규칙을 고안하는 것은 고사하고 전체 속성 집합을 수동으로 식별할 수 없다는 것을 알게 됩니다.
현명하게 포기하고 후자의 접근 방식을 시도하기로 결정합니다. 신경망 또는 더 나은 방법으로는 심층 신경망을 사용하는 것입니다.
딥러닝 모델을 사용하면 코딩 시간을 절약하고 더 나은 결과를 얻을 수 있습니다.
신경망은 이 프로그래밍 접근 방식과 뇌가 작동하는 방식이 유사하기 때문에 그렇게 명명되었습니다.
뇌와 마찬가지로 신경망 알고리즘은 뉴런 또는 노드로 구성된 네트워크를 사용합니다. 그리고 뇌와 마찬가지로 이러한 뉴런은 입력을 받아 출력을 생성하는 개별적인 함수(또는 작은 기계)입니다. 이러한 노드는 계층으로 배열되어 한 계층에 있는 뉴런의 출력이 다음 계층의 뉴런에 대한 입력이 되고, 네트워크의 외부 계층에 있는 뉴런이 최종 결과를 생성할 때까지 이어집니다.
따라서 각 뉴런은 뇌에서와 마찬가지로 매우 제한된 입력을 받고 매우 제한된 출력을 생성하는 뉴런 계층이 있습니다. 뉴런의 첫 번째 레이어(또는 입력 레이어)는 입력을 받아들이고 네트워크의 마지막 레이어(또는 출력 레이어)는 결과를 출력합니다.
이러한 유형의 알고리즘을 '신경망'이라고 부르는 것이 정확한가요?
물론 인간의 뇌는 신경망보다 훨씬 더 복잡하고 강력합니다. 알고리즘에 '심층 신경망'이라는 이름을 붙이는 것은 브랜딩 쿠데타이지만, 이러한 기술로 달성할 수 있는 것에 대한 비현실적인 기대감을 불러일으킬 수 있습니다. 하지만 매우 복잡한 신경망을 사용하여 뇌를 재설계하려는 사람들이 있으며, 이를 통해 봇 개발에서 인간과 같은 일반적인 지능을 복제할 수 있기를 희망하고 있습니다. 그렇다면 신경망과 머신러닝 기술이 개 인식 문제에 어떻게 도움이 될까요?
개와 같은 속성을 수동으로 정의하는 대신 심층 신경망 알고리즘이 중요한 속성을 식별하고 프로그래밍 없이도 모든 특수한 경우를 처리할 수 있습니다.
심층 신경망은 어떻게 작동하나요?
이 작업은 다음과 같이 수행됩니다:
입력 레이어의 각 뉴런은 이미지에서 약간의 정보를 입력으로 받은 다음 해당 정보가 개를 암시하는지 여부에 따라 무작위로 가중치를 부여합니다(0에서 1 사이). 가중치가 낮으면(0.5 미만) 개와 관련된 정보일 가능성이 낮고, 가중치가 높으면 개와 관련된 정보일 가능성이 높다는 뜻입니다. 이러한 다층 신경망 접근 방식을 딥 러닝이라고 합니다. 신경망과 딥 러닝은 컴퓨터의 이해력을 향상시키는 매우 강력한 기술입니다.
심층 신경망은 우리 뇌의 뉴런처럼 작동하는 여러 계층의 노드로 구성됩니다.
따라서 심층 신경망을 계속 진행하기 위해 이러한 뉴런의 가중치는 다른 뉴런 계층에 입력으로 제공되며, 이 계층 역시 무작위로 가중치를 할당하고 네트워크의 더 많은 뉴런에 입력으로 전달합니다. 이 과정은 뉴런의 출력 레이어가 이진 판결을 내릴 때까지 계속됩니다. 뉴런에 전달된 가중치의 평균이 0.5보다 크면 개이고, 그렇지 않으면 개가 아닙니다. 여러 계층의 노드에 걸친 뉴런 간의 연결과 활성화는 심층 신경망 애플리케이션에 강력한 성능을 부여합니다.
심층 신경망은 정답을 생성하는지 어떻게 알 수 있을까요?
이 시점에서 관련 질문은 다음과 같습니다. 심층 신경망이 올바르게 추측했는지 여부와 올바르게 추측한 경우와 그렇지 않은 경우 어떻게 되는가? 그리고 신경망은 올바르게 추측했는지 아닌지 어떻게 알 수 있을까요?
사진에 개가 있는지 여부에 따라 모든 사진에 '개' 또는 '개가 아님'이라는 라벨을 붙이는 매우 시간이 많이 걸리는 분류 작업을 수행하면 신경망이 이를 알 수 있습니다. 신경망은 단순히 레이블을 보고 개를 올바르게 식별했는지 여부를 확인합니다.
물론 우리는 개 사진 한 장에 대해 "개인지 아닌지" 문제를 맞혔는지 여부에는 관심이 없습니다. 우리는 모든 사진에 대해 문제를 맞혔는지, 아니면 적어도 사진에 개가 있는지 없는지를 평가할 때 몇 퍼센트의 정확도를 보였는지에 관심이 있습니다.
딥 뉴럴 네트워크는 학습을 위해 어떻게 트레이닝을 사용하나요?
신경망은 데이터를 반복할 때마다 학습하여 정확도를 향상시킵니다.
네트워크의 모든 뉴런에 대해 주어진 가중치 세트에 대해 신경망은 모든 사진에 대해 추측을 한 다음 얼마나 정확한지 결정합니다. 개가 사진에 있을 때 개가 사진에 있다고 맞힌 비율은 몇 퍼센트이고, 개가 사진에 없을 때 개가 있다고 맞히거나 개가 사진에 있을 때 개가 없다고 맞히는 등 잘못된 결과를 도출한 횟수는 몇 퍼센트나 되나요? AI 알고리즘이 얼마나 정확한지를 나타내는 이 지표는 신경망 모델에 대한 필수적인 피드백입니다.
모든 사진을 한 번 실행한 후에는 무작위로(또는 다른 방법으로) 일부 가중치를 조정한 다음 사진에 무엇이 있는지 추측하는 전체 연습을 다시 수행할 수 있습니다. 두 번째 실행의 결과가 더 좋으면 이전 가중치 세트로 되돌아가지 않고 그대로 유지됩니다. 두 번째 실행의 결과가 더 나쁘면 이전 가중치 세트로 되돌아간 다음 해당 가중치에 다른 수정을 시도할 수 있습니다.
이 과정은 신경망이 사진 속 개를 잘 식별할 수 있게 될 때까지(희망적으로) 계속됩니다.
알고리즘이 개를 정확하게 식별할 수 있을 때 이를 수렴이라고 합니다. 개를 식별하도록 성공적으로 "훈련"되었습니다.
신경망의 종류에는 어떤 것이 있나요?
컨볼루션 신경망
합성곱 신경망(CNN)은 대규모 데이터 세트를 처리하거나 이를 통해 학습하도록 설계된 인공 지능의 한 유형입니다. 합성곱 신경망은 이러한 유형의 네트워크 또는 일반적인 AI 기술을 구체적으로 설명하기 위해 새로 만들어진 용어입니다.
CNN은 딥러닝을 사용하여 생성 작업뿐만 아니라 설명 작업도 수행하는 강력한 이미지 인식 AI 도구입니다. 생성 작업의 예로는 자동 자르기, 캡션 작성, 비디오 촬영, 마임 그래프, 이미지 오버레이 등이 있습니다. 컨볼루션 신경망에는 컨볼루션 레이어라고 하는 것이 포함되어 있습니다. 이 레이어의 각 뉴런은 시야의 작은 부분의 정보만 처리합니다. 각 뉴런의 입력은 체크섬과 같은 방식으로 정렬되어 특징 맵을 생성합니다.
인공 신경망
인공 신경망(ANN)은 로지스틱 회귀로 이해할 수 있는 서로 다른 깊이 또는 계층에 있는 많은 퍼셉트론으로 구성된 네트워크입니다. ANN은 입력이 순방향으로만 처리되기 때문에 피드 포워드 신경망이라고도 불리며, 한 레이어가 입력을 받아 선형적인 방식으로 출력을 전송합니다.
인공 신경망은 범용 함수 근사기라고도 합니다. 딥러닝으로 구현할 수 있는 ANN 및 매핑 함수와 같은 순수 신경망 알고리즘을 사용하면 컴퓨터가 모든 함수를 학습할 수 있습니다. 범용 근사가 중요한 이유 중 하나는 활성화 함수입니다. 활성화 함수는 입력과 출력 간의 복잡한 관계를 학습하면서 네트워크에 비선형 속성을 도입합니다. 이는 서로 다른 종류의 네트워크가 서로 학습하는 데 도움이 됩니다.
심층 신경망은 시간이 지남에 따라 어떻게 개선되나요?
알고리즘이 수행하는 작업을 상상하는 한 가지 방법은 각 뉴런을 일종의 확실성 테스트라고 상상하는 것입니다. 개를 식별하기 위해 모든 if-then 문을 코딩하는 대신, 각 뉴런은 사진 속 물체가 개라는 최종 판단에서 더하거나 빼도록 보정됩니다. 마치 개인지 아닌지 같은 판단이 여러 개의 연결된 판단으로 나뉘어 최종 판단에 총체적으로 기여하는 것과 같습니다.
물론 가능하다면 융합을 달성하는 것이 가장 큰 목표입니다. 가급적 단기간에 합리적인 시간 내에 이를 달성하는 것도 중요한 목표입니다.
딥러닝 알고리즘에는 사람이 이해하기 어려운 학습 과정이 있습니다.
흥미로운 점은 신경망이 사진 속 개를 식별할 수 있게 하는 논리가 사람이 이해할 수 없다는 것입니다. 딥 러닝 모델에는 숨겨진 로직이 있으며, 본질적으로 자체 심층 네트워크를 생성하는 숨겨진 노드 계층의 블랙박스와 같습니다. 그렇긴 하지만 이미지 인식 작업을 위해 신경망의 논리를 시각적으로 표현하려는 시도가 몇 차례 있었습니다. 다른 경우에는 알고리즘이 뒤에서 어떤 작업을 수행하는지 볼 수 없으며 딥 러닝 방법은 여전히 숨겨져 있습니다.
신경망과 머신 러닝은 현재 널리 사용되고 있지만, 이러한 알고리즘 중 상당수는 약 50년 전에 알려졌습니다.
딥 뉴럴 네트워크가 다양한 산업 분야에서 점점 인기를 얻고 있는 이유는 무엇인가요?
신경망이 처음 발명되었을 때보다 지금 훨씬 더 많이 사용되는 주된 이유 중 하나는 처리 능력이 이전보다 더 빠르고 저렴해졌기 때문입니다. 컴퓨팅 성능이 빠른 융합을 달성하는 데 큰 역할을 했습니다. 또 다른 이유는 이제 데이터가 어디에나 존재하기 때문에 chatbots 같은 데이터를 비즈니스에 활용할 수 있는 알고리즘의 가치가 높아졌기 때문입니다.
고급 신경망에는 높은 처리 능력과 많은 데이터가 필요합니다.
딥러닝 신경망은 데이터와 프로세서를 많이 사용하는 기술로, 프로그래밍 기술을 사용하는 프로그래머가 달성할 수 없는 결과를 얻을 수 있습니다. 유비쿼터스 데이터를 사용할 수 있고 바람직한 결과를 쉽게 분류하거나 순위를 매길 수 있는 특정 문제에 이상적으로 적합합니다.
수십만, 수백만 장의 반려견 사진이 없으면 알고리즘을 훈련시키는 것이 불가능합니다. 이러한 기술은 많은 데이터를 사용할 수 있을 때만 작동합니다. 모든 특수한 경우를 단 1000장의 사진으로 표현하기는 어렵기 때문에 이는 매우 당연한 일입니다.
신경망은 정형 데이터 또는 비정형 데이터에 직면할 수 있습니다.
위의 예에서 한 가지 문제점은 모든 사진에 라벨을 붙이는 데 많은 수작업이 필요하다는 것입니다. 구조화된 방식으로 레이블이 지정된 데이터를 사용하는 것이 알고리즘에 더 쉽습니다. 구조화된 데이터를 사용하는 신경망 머신러닝을 지도 학습이라고 합니다.
그렇다면 이 모든 태깅 작업을 피할 수 있을까요? 많은 수작업을 피할 수 있을 뿐만 아니라 인터넷에서 사용할 수 있는 대부분의 데이터는 구조화되지 않은, 즉 세심하게 레이블이 지정되거나 구조화되어 있지 않은 비정형 데이터이기 때문에 좋은 생각입니다.
신경망이 비정형 데이터와 함께 작동할 수 있나요?
비정형 데이터로 작동하는 인공 신경망과 머신러닝을 비지도 학습이라고 합니다. 물론 이것은 머신 러닝의 성배라고 할 수 있으며 인간의 학습 방식과 더 유사합니다. 하지만 기계의 비지도 학습도 인간보다 훨씬 더 많은 데이터를 '학습'해야 하며, 기계는 학습된 예제에서 벗어난 예제로 쉽게 추론할 수 없습니다.
많은 딥러닝 모델이 인간의 두뇌 과정을 재현하려고 합니다.
어떤 사람들은 이러한 유형의 알고리즘이 인간 수준의 '이해'에 접근하기 시작할 정도로 뇌를 재설계함으로써 개발될 수 있다고 믿습니다. 이들은 뇌의 정교한 스캐닝 기술을 사용하여 뇌의 신경망이 실제로 어떻게 작동하는지에 대한 통찰력을 얻을 수 있을 것이라고 믿습니다. 이러한 설계와 패턴을 모방하면 인간 수준의 지능을 복제할 수 있습니다.
이러한 기술은 의심할 여지없이 독창적이고 특히 대규모 데이터 세트를 사용할 수 있는 경우 매우 유용하지만, 이러한 단순한 알고리즘이 인간과 같은 고도로 창의적인 지능의 기반이 될 수 있다고 상상하기는 어렵습니다.