개발자/인공지능과 인간

ChatGPT 작동 원리 2 - 신경망

지구빵집 2023. 6. 13. 08:15
반응형

 

 

신경망

 

그렇다면 이미지 인식 과 같은 작업을 위한 일반적인 모델은 실제로 어떻게 작동할까요? 현재 가장 인기 있고 성공적인 접근 방식은 신경망을 사용합니다 . 1940년대에 오늘날 사용되는 것과 매우 유사한 형태로 발명된 신경망은 뇌가 작동하는 것처럼 보이는 단순한 이상화로 생각할 수 있습니다 .

 

인간의 뇌에는 약 1000억 개의 뉴런(신경 세포)이 있으며, 각 뉴런은 초당 최대 1,000회까지 전기 펄스를 생성할 수 있습니다. 뉴런은 복잡한 그물로 연결되어 있으며 각 뉴런에는 나무와 같은 가지가 있어 수천 개의 다른 뉴런에 전기 신호를 전달할 수 있습니다. 그리고 대략적인 근사치에서 특정 뉴런이 주어진 순간에 전기 펄스를 생성하는지 여부는 다른 "가중치"에 기여하는 연결이 다른 다른 뉴런에서 어떤 펄스를 수신하는지에 따라 달라집니다.

 

우리가 "이미지를 볼 때" 일어나는 일은 이미지의 광자가 눈 뒤쪽의 세포("광수용체")에 떨어질 때 신경 세포에서 전기 신호를 생성하는 것입니다. 이 신경 세포는 다른 신경 세포와 연결되어 있으며 결국 신호는 일련의 뉴런 층 전체를 통과합니다. 그리고 이 과정에서 우리는 이미지를 "인식"하고 결국 "2를 본다"는 "생각을 형성"합니다(그리고 결국 "2"라는 단어를 소리내어 말하는 것과 같은 일을 할 수도 있습니다).

 

이전 섹션의 "블랙박스" 기능은 이러한 신경망의 "수학화된" 버전입니다. 11개의 레이어가 있습니다(단 4개의 "코어 레이어"만 있음).

 

 

 

이 신경망에 대해 특별히 "이론적으로 파생된" 것은 없습니다. 그것은 1998년에 엔지니어링의 일부로 구성되어 작동하는 것으로 밝혀진 것입니다. (물론 우리의 뇌가 생물학적 진화 과정을 통해 만들어졌다고 표현하는 것과 크게 다르지 않다.)

 

좋아요, 하지만 이와 같은 신경망이 어떻게 "사물을 인식"합니까? 핵심은 어트랙터의 개념입니다 . 1과 2의 손글씨 이미지가 있다고 상상해보십시오.

 

 

 

우리는 어쨌든 모든 1이 "한 곳으로 끌리기"를 원하고 모든 2가 "다른 곳으로 끌리기"를 원합니다. 또는 다르게 표현하면 이미지가 2보다는 " 1에 더 가깝다 "면 "1 위치"에 있고 그 반대의 경우도 마찬가지입니다.

 

간단한 비유로 평면에 점으로 표시된 특정 위치가 있다고 가정해 보겠습니다(실제 설정에서는 커피숍의 위치일 수 있음). 그런 다음 우리는 비행기의 어떤 지점에서 시작하여 항상 가장 가까운 지점에서 끝나기를 원한다고 상상할 수 있습니다(즉, 항상 가장 가까운 커피숍으로 이동합니다). 평면을 이상적인 "분지"로 구분된 영역("유인 유역")으로 나누어 이를 나타낼 수 있습니다.

 

 

 

우리는 이것을 일종의 "인식 작업"을 구현하는 것으로 생각할 수 있습니다. 이 작업에서는 주어진 이미지가 "가장 닮은" 숫자를 식별하는 것과 같은 일을 하는 것이 아니라 주어진 이미지의 점이 무엇인지 직접적으로 보는 것입니다. 점이 가장 가깝습니다. (여기서 보여주는 "보로노이 다이어그램" 설정은 2D 유클리드 공간에서 점을 분리합니다. 숫자 인식 작업은 매우 유사한 작업을 수행하는 것으로 생각할 수 있지만 모든 픽셀의 회색 수준으로 형성된 784차원 공간에서 각 이미지.)

 

그렇다면 신경망이 "인식 작업을 수행"하도록 하려면 어떻게 해야 할까요? 다음과 같은 매우 간단한 경우를 생각해 봅시다.

 

 

 

우리의 목표는 위치 { x , y }에 해당하는 "입력"을 받은 다음 가장 가까운 세 지점으로 "인식"하는 것입니다. 또는 다른 말로 신경망이 다음과 같은 { x , y } 함수를 계산하기를 원합니다.

 

 

 

 

그렇다면 신경망으로 어떻게 이것을 할 수 있을까요? 궁극적으로 신경망은 일반적으로 레이어로 배열된 이상화된 "뉴런"의 연결된 모음이며 간단한 예는 다음과 같습니다.

 

 

 

각 "뉴런"은 간단한 수치 함수를 평가하도록 효과적으로 설정됩니다. 그리고 네트워크를 "사용"하려면 상단에 숫자(좌표 x 및 y 와 같은)를 입력한 다음 각 레이어의 뉴런이 "기능을 평가"하고 네트워크를 통해 결과를 전달하여 최종 결과를 생성합니다. 맨 아래:

 

 

 

전통적인(생물학적으로 영감을 받은) 설정에서 각 뉴런은 효과적으로 이전 레이어의 뉴런에서 특정 "들어오는 연결" 세트를 가지며 각 연결에는 특정 "가중치"(양수 또는 음수일 수 있음)가 할당됩니다. 주어진 뉴런의 값은 "이전 뉴런"의 값에 해당 가중치를 곱한 다음 이를 더하고 상수를 더한 다음 마지막으로 "임계값"(또는 "활성화") 기능을 적용하여 결정됩니다.

 

수학적 용어로 뉴런에 x = { x 1 , x 2 …} 입력이 있는 경우 f [ w 를 계산합니다 . x + b ], 여기서 가중치 w상수 b는 일반적으로 네트워크의 각 뉴런에 대해 다르게 선택됩니다. 함수 f는 일반적으로 동일합니다.

 

컴퓨팅 승 . x + b 는 행렬 곱셈과 덧셈의 문제일 뿐입니다. "활성화 함수" f는 비선형성을 도입합니다(궁극적으로 사소하지 않은 동작으로 이어짐). 다양한 활성화 기능이 일반적으로 사용됩니다. 여기서는 램프 (또는 ReLU) 를 사용합니다 .

 

 

 

 

신경망이 수행하기를 원하는 각 작업에 대해(또는 동등하게 평가하기를 원하는 각 전체 기능에 대해) 다양한 가중치를 선택할 수 있습니다. (나중에 논의하겠지만 이러한 가중치는 일반적으로 우리가 원하는 출력의 예에서 머신 러닝을 사용하여 신경망을 "훈련"하여 결정됩니다.)

 

궁극적으로 모든 신경망은 작성하기가 복잡할 수 있지만 전체 수학 함수에 해당합니다. 위 예의 경우 다음과 같습니다.

 

 

 

 

ChatGPT의 신경망도 이와 같은 수학적 함수에 해당하지만 사실상 수십억 개의 용어가 있습니다.

 

하지만 개별 뉴런으로 돌아가 봅시다. 다음은 두 개의 입력(좌표 x 및 y를 나타냄 )이 있는 뉴런이 다양한 가중치 및 상수 선택( 활성화 함수인 Ramp )을 사용하여 계산할 수 있는 함수의 몇 가지 예입니다 .

 

 

 

 

그러나 위의 더 큰 네트워크는 어떻습니까? 음, 계산하는 내용은 다음과 같습니다.

 

 

 

 

 

"맞다"는 아니지만 위에서 보여준 "가장 가까운 지점" 기능에 가깝습니다.

 

다른 신경망에서 어떤 일이 일어나는지 봅시다. 나중에 설명하겠지만 각각의 경우에 기계 학습을 사용하여 최상의 가중치를 선택합니다. 그런 다음 해당 가중치가 있는 신경망이 계산하는 것을 여기에서 보여줍니다.

 

 

 

 

더 큰 네트워크는 일반적으로 우리가 목표로 하는 기능을 근사화하는 데 더 좋습니다. 그리고 "각 어트랙터 분지의 중간"에서 일반적으로 원하는 답을 정확히 얻습니다. 그러나 신경망이 "마음을 정하는 데 어려움을 겪는" 경계에서는 상황이 더 복잡해질 수 있습니다.

 

이 간단한 수학적 스타일의 "인식 작업"을 통해 "정답"이 무엇인지 분명합니다. 그러나 손글씨 숫자를 인식하는 문제에서는 그렇게 명확하지 않습니다. 누군가 "2"를 잘못 써서 "7"처럼 보이면 어떻게 됩니까? 그럼에도 불구하고 우리는 신경망이 어떻게 숫자를 구별하는지 물을 수 있으며 이것은 다음과 같은 표시를 제공합니다.

 

 

 

 

네트워크가 어떻게 구별하는지 "수학적"으로 말할 수 있습니까? 설마. 그것은 단지 "신경망이 하는 일을 하는 것"입니다. 그러나 그것은 일반적으로 우리 인간이 만드는 구별과 상당히 잘 일치하는 것으로 밝혀졌습니다.

 

좀 더 정교한 예를 들어보겠습니다. 고양이와 개 이미지가 있다고 가정해 보겠습니다. 그리고 우리는 그것들을 구별하도록 훈련된 신경망을 가지고 있습니다 . 다음은 몇 가지 예에서 수행할 수 있는 작업입니다.

 

 

 

 

이제 "정답"이 무엇인지는 훨씬 더 명확하지 않습니다. 고양이 옷을 입은 개는 어떻습니까? 기타 신경망에 주어진 입력이 무엇이든 인간이 할 수 있는 방식과 합리적으로 일치하는 방식으로 답변을 생성합니다. 위에서 말했듯이 그것은 우리가 "첫 번째 원칙에서 파생"할 수 있는 사실이 아닙니다. 그것은 적어도 특정 영역에서 경험적으로 사실로 밝혀진 것입니다. 그러나 신경망이 유용한 핵심 이유는 신경망이 일을 처리하는 "인간과 같은" 방식을 포착하기 때문입니다.

 

자신에게 고양이 사진을 보여주고 "왜 고양이야?"라고 물어보세요. 어쩌면 당신은 "글쎄, 나는 그것의 뾰족한 귀 등을 본다"라고 말하기 시작할 것입니다. 하지만 그 이미지를 어떻게 고양이로 인식했는지 설명하기란 그리 쉽지 않다. 어떻게 든 당신의 두뇌가 그것을 알아 냈을뿐입니다. 그러나 뇌의 경우 (적어도 아직은) "내부로 들어가서" 어떻게 알아냈는지 확인할 방법이 없습니다. (인공) 신경망은 어떻습니까? 음, 고양이 사진을 보여줄 때 각 "뉴런"이 무엇을 하는지 보는 것은 간단합니다. 그러나 기본 시각화를 얻는 것조차 일반적으로 매우 어렵습니다.

 

위의 "가장 가까운 점" 문제에 사용한 최종 네트워크에는 17개의 뉴런이 있습니다. 손글씨 숫자를 인식하는 네트에는 2190개가 있습니다. 그리고 우리가 고양이와 개를 인식하는 데 사용하는 네트에는 60,650개가 있습니다. 일반적으로 60,650 차원 공간에 해당하는 것을 시각화하는 것은 꽤 어려울 것입니다. 그러나 이것은 이미지를 처리하도록 설정된 네트워크이기 때문에 많은 뉴런 레이어가 보고 있는 픽셀 배열과 같은 배열로 구성됩니다.

 

그리고 우리가 전형적인 고양이 이미지를 취한다면

 

 

고양이

 

 

그런 다음 파생 이미지 모음으로 첫 번째 레이어의 뉴런 상태를 나타낼 수 있습니다. 그 중 다수는 "배경 없는 고양이" 또는 "고양이 윤곽선"과 같은 것으로 쉽게 해석할 수 있습니다.

 

 

 

 

10번째 레이어에서는 무슨 일이 일어나고 있는지 해석하기가 더 어렵습니다.

 

 

 

 

그러나 일반적으로 우리는 신경망이 "특정 기능을 골라내고"(어쩌면 뾰족한 귀가 그중에 있을 수 있음) 이를 사용하여 이미지가 무엇인지 결정한다고 말할 수 있습니다. 그러나 이러한 기능은 "뾰족한 귀"와 같은 이름을 가진 기능입니까? 대부분은 아닙니다.

 

우리의 두뇌가 유사한 기능을 사용하고 있습니까? 대부분 우리는 모릅니다. 그러나 여기에서 보여주고 있는 것과 같은 신경망의 처음 몇 개의 레이어가 우리가 알고 있는 것과 유사해 보이는 이미지의 측면(객체의 가장자리와 같은)을 선택하는 것처럼 보인다는 것은 주목할 만합니다. 뇌의 시각 처리.

 

그러나 우리가 신경망에서 "고양이 인식 이론"을 원한다고 가정해 봅시다. 우리는 이렇게 말할 수 있습니다: "봐, 이 특정 네트워크가 해낸다." 그리고 즉시 우리는 그것이 "문제가 얼마나 어려운지"(예를 들어, 얼마나 많은 뉴런이나 레이어가 필요할 수 있는지) 어느 정도 알 수 있다. 그러나 적어도 현재로서는 네트워크가 수행하는 작업에 대해 "서술적으로 설명"할 수 있는 방법이 없습니다. 아마도 그것은 진정으로 계산적으로 기약할 수 없고 각 단계를 명시적으로 추적하는 것 외에는 그것이 무엇을 하는지 찾을 수 있는 일반적인 방법이 없기 때문일 것입니다. 또는 우리가 "과학을 이해"하지 못했고 진행 상황을 요약할 수 있는 "자연법칙"을 식별하지 못했을 수도 있습니다.

 

ChatGPT로 언어 생성에 관해 이야기할 때도 같은 종류의 문제에 직면하게 됩니다. 그리고 다시 "무엇을 하고 있는지 요약"하는 방법이 있는지 명확하지 않습니다. 그러나 언어의 풍부함과 세부 사항(및 언어에 대한 우리의 경험)은 이미지보다 더 많은 것을 얻을 수 있게 해줍니다. 

 

 

오늘은 여기까지...

 

 

 

반응형