기계 학습 및 신경망 훈련
우리는 지금까지 특정 작업을 수행하는 방법을 "이미 알고 있는" 신경망에 대해 이야기했습니다. 그러나 신경망을 매우 유용하게 만드는 것은(아마도 뇌에서도) 원칙적으로 모든 종류의 작업을 수행할 수 있을 뿐만 아니라 이러한 작업을 수행하기 위해 점진적으로 "예제를 통해 훈련"될 수 있다는 것입니다.
고양이와 개를 구별하기 위해 신경망을 만들 때 명시적으로 수염을 찾는 프로그램을 효과적으로 작성할 필요가 없습니다. 대신 고양이와 개가 무엇인지에 대한 많은 예를 보여주고 네트워크가 이들을 구별하는 방법을 "기계 학습"하도록 합니다.
그리고 요점은 훈련된 네트워크가 표시된 특정 예에서 "일반화"된다는 것입니다. 위에서 본 것처럼 단순히 네트워크가 표시된 고양이 이미지의 특정 픽셀 패턴을 인식하는 것이 아닙니다. 오히려 그것은 신경망이 우리가 일종의 "일반적인 고양이"라고 생각하는 것을 기반으로 어떻게든 이미지를 구별할 수 있다는 것입니다.
그렇다면 신경망 훈련은 실제로 어떻게 작동할까요? 본질적으로 우리가 항상 하려고 하는 것은 신경망이 우리가 제공한 예를 성공적으로 재현하도록 만드는 가중치를 찾는 것입니다. 그런 다음 "합리적인" 방식으로 이러한 예제를 "보간"(또는 "일반화") 하기 위해 신경망에 의존하고 있습니다.
위의 최접점 문제보다 더 간단한 문제를 살펴봅시다. 신경망이 함수를 학습하도록 해 보겠습니다:
이 작업을 위해서는 다음과 같이 하나의 입력과 하나의 출력만 있는 네트워크가 필요합니다.
그러나 어떤 가중치 등을 사용해야 합니까? 가능한 모든 가중치 세트로 신경망은 일부 함수를 계산합니다. 예를 들어, 무작위로 선택된 몇 가지 가중치 세트로 수행하는 작업은 다음과 같습니다.
그리고 예, 이러한 경우 중 어느 것도 우리가 원하는 기능을 재생산하는 데 가까워지지 않는다는 것을 분명히 알 수 있습니다. 그렇다면 함수를 재현할 가중치를 어떻게 찾을 수 있을까요?
기본 아이디어는 "학습"을 위해 많은 "입력 → 출력" 예제를 제공한 다음 이러한 예제를 재현할 가중치를 찾는 것입니다. 점진적으로 더 많은 예제를 사용하여 수행한 결과는 다음과 같습니다.
이 "훈련"의 각 단계에서 네트워크의 가중치는 점진적으로 조정되며 결국 원하는 기능을 성공적으로 재현하는 네트워크를 얻게 됩니다. 그렇다면 어떻게 가중치를 조정해야 할까요? 기본 아이디어는 각 단계에서 원하는 기능을 얻는 데 "얼마나 멀리 떨어져 있는지" 확인한 다음 더 가까워지는 방식으로 가중치를 업데이트하는 것입니다.
"우리가 얼마나 멀리 떨어져 있는지"를 알아내기 위해 일반적으로 "손실 함수"(또는 "비용 함수"라고도 함)라고 하는 것을 계산합니다. 여기서는 우리가 얻은 값과 실제 값 사이의 차이의 제곱의 합인 단순(L2) 손실 함수를 사용합니다. 그리고 학습 과정이 진행됨에 따라 손실 함수는 (작업마다 다른 특정 "학습 곡선"에 따라) 점차 감소하여 네트워크가 원하는 함수를 성공적으로 재현하는 지점에 도달할 때까지 (적어도 근사치에 가깝게) 감소하는 것을 볼 수 있습니다:
자, 마지막으로 설명해야 할 중요한 부분은 손실 함수를 줄이기 위해 가중치를 조정하는 방법입니다. 우리가 말했듯이 손실 함수는 우리가 가진 값과 실제 값 사이의 "거리"를 제공합니다. 그러나 "우리가 가진 값"은 현재 버전의 신경망과 그 안의 가중치에 의해 각 단계에서 결정됩니다. 그러나 이제 가중치가 변수라고 상상해 보십시오. 예를 들어 w i 입니다 . 우리는 이러한 변수에 의존하는 손실을 최소화하기 위해 이러한 변수의 값을 조정하는 방법을 찾고자 합니다.
예를 들어, (실제로 사용되는 일반적인 신경망을 놀랍도록 단순화하여) w 1 및 w 2 두 개의 가중치만 있다고 상상해 보십시오 . 그러면 w 1 과 w 2 의 함수로서 다음과 같은 손실이 있을 수 있습니다.
수치해석은 이와 같은 경우에 최소값을 찾기 위한 다양한 기술을 제공합니다. 그러나 일반적인 접근 방식은 이전 w 1 , w 2 에서 가장 가파른 내리막 경로를 점진적으로 따르는 것입니다.
물이 산 아래로 흐르는 것처럼 이 절차가 표면의 일부 지역 최소값("산악 호수")에서 끝날 것이라는 점만 보장됩니다. 궁극적인 글로벌 최솟값에 도달하지 못할 수도 있습니다.
"무게 지형"에서 가장 가파른 내리막 경로를 찾는 것이 가능할지는 분명하지 않습니다. 그러나 미적분학이 구출됩니다. 위에서 언급했듯이 항상 신경망을 입력과 가중치에 따라 달라지는 수학 함수를 계산하는 것으로 생각할 수 있습니다. 그러나 이제 이러한 가중치와 관련하여 차별화하는 것을 고려하십시오. 사실상 미적분학의 연쇄 법칙을 통해 신경망의 연속적인 계층이 수행하는 작업을 "해석"할 수 있습니다. 그리고 그 결과 우리는 적어도 일부 로컬 근사치에서 신경망의 작동을 "반전"하고 출력과 관련된 손실을 최소화하는 가중치를 점진적으로 찾을 수 있습니다.
위의 그림은 가중치가 2개인 비현실적으로 간단한 경우에 수행해야 할 최소화의 종류를 보여줍니다. 그러나 더 많은 가중치(ChatGPT는 1,750억 사용)를 사용하더라도 최소한 일정 수준의 근사치까지 최소화할 수 있습니다. 그리고 실제로 2011년경에 발생한 "딥 러닝"의 큰 발전은 가중치가 상당히 적을 때보다 가중치가 많을 때 어떤 의미에서 최소화(최소한 근사치)를 수행하는 것이 더 쉬울 수 있다는 발견과 관련이 있습니다.
즉, 다소 반직관적으로 신경망을 사용하면 단순한 문제보다 더 복잡한 문제를 해결하는 것이 더 쉬울 수 있습니다. 대략적인 이유는 "가중치 변수"가 많을 때 "많은 다른 방향"을 가진 고차원 공간을 갖게 되어 최소값으로 이어질 수 있는 반면 변수가 적을수록 종료하기가 더 쉬워지기 때문인 것 같습니다. "탈출 방향"이 없는 지역 최소값("산 호수")에 갇히게 됩니다.
일반적인 경우 거의 동일한 성능을 가진 신경망을 제공하는 다양한 가중치 모음이 있다는 점을 지적할 가치가 있습니다. 그리고 일반적으로 실용적인 신경망 훈련에는 다음과 같이 "다르지만 동등한 솔루션"으로 이어지는 많은 무작위 선택이 있습니다.
그러나 그러한 각각의 "다른 솔루션"은 최소한 약간씩 다른 동작을 합니다. 예를 들어 훈련 예제를 제공한 지역 외부에서 "외삽"을 요청하면 극적으로 다른 결과를 얻을 수 있습니다.
그러나 이들 중 어느 것이 "올바른" 것입니까? 정말 말할 방법이 없습니다. 그것들은 모두 "관찰된 데이터와 일치"합니다. 그러나 그것들은 모두 "상자 밖에서" 무엇을 해야 하는지 "생각"하는 서로 다른 "타고난" 방식에 해당합니다. 그리고 일부는 다른 것보다 우리 인간에게 "더 합리적"으로 보일 수 있습니다.
신경망 훈련의 실습 및 지식
특히 지난 10년 동안 신경망 훈련 기술에 많은 발전이 있었습니다. 그리고 네, 기본적으로 예술입니다. 때때로, 특히 돌이켜보면 수행되고 있는 일에 대한 "과학적 설명"의 희미한 빛을 볼 수 있습니다. 그러나 대부분은 시행착오를 통해 발견되었으며 신경망 작업 방법에 대한 중요한 지식을 점진적으로 구축한 아이디어와 요령을 추가했습니다.
몇 가지 중요한 부분이 있습니다. 첫째, 특정 작업을 위해 어떤 신경망 아키텍처를 사용해야 하는지에 대한 문제가 있습니다. 그런 다음 신경망을 교육할 데이터를 얻는 방법에 대한 중요한 문제가 있습니다. 그리고 점점 더 많은 사람들이 처음부터 네트워크를 훈련하는 것을 다루지 않습니다. 대신 새로운 네트워크는 이미 훈련된 다른 네트워크를 직접 통합하거나 적어도 그 네트워크를 사용하여 더 많은 훈련 예제를 생성할 수 있습니다.
모든 특정 종류의 작업에 대해 다른 신경망 아키텍처가 필요하다고 생각했을 수 있습니다. 그러나 발견된 것은 동일한 아키텍처가 종종 상당히 다른 작업에 대해서도 작동하는 것처럼 보인다는 것입니다. 어떤 수준에서 이것은 보편적인 계산 (및 계산 등가성의 원칙 )의 개념을 상기시키지만 , 나중에 논의하겠지만 일반적으로 우리가 신경을 사용하려는 작업이 해야 할 네트워크는 "인간과 같은" 것입니다. 신경망은 매우 일반적인 "인간과 같은 프로세스"를 캡처할 수 있습니다.
신경망 초기에는 "신경망이 가능한 한 적게 수행하도록 해야 한다"는 생각이 있었습니다. 예를 들어, 음성을 텍스트로 변환할 때 먼저 음성의 오디오를 분석하고 음소로 분해하는 등의 작업을 수행해야 한다고 생각했습니다. 그러나 발견된 것은 적어도 "인간과 유사한 작업"의 경우 "종단 간 문제"에 대해 신경망을 훈련시켜 필요한 중간 기능, 인코딩 등을 스스로 "발견"하도록 합니다.
복잡한 개별 구성 요소를 신경망에 도입하여 "특정 알고리즘 아이디어를 명시적으로 구현"하도록 해야 한다는 생각도 있었습니다. 그러나 다시 한 번 이것은 대부분 가치가 없는 것으로 판명되었습니다. 대신, 매우 간단한 구성 요소를 처리하고 이러한 알고리즘 아이디어와 동등한 것을 달성하기 위해 (아마도) 달성하기 위해 "스스로 구성"(일반적으로 우리가 이해할 수 없는 방식이지만)하도록 하는 것이 좋습니다.
신경망과 관련된 "구조화 아이디어"가 없다는 말은 아닙니다. 따라서 예를 들어 로컬 연결이 있는 뉴런의 2D 배열을 갖는 것은 이미지 처리의 초기 단계에서 적어도 매우 유용해 보입니다. 그리고 나중에 살펴보겠지만 ChatGPT와 같은 인간 언어와 같은 것을 처리할 때 "시퀀스를 되돌아보는" 데 집중하는 연결 패턴을 갖는 것이 유용해 보입니다.
하지만 신경망의 중요한 특징은 일반적인 컴퓨터와 마찬가지로 궁극적으로 데이터를 처리한다는 점입니다. 그리고 현재 신경망 훈련에 대한 현재의 접근 방식을 사용하는 신경망은 특히 숫자 배열을 처리합니다. 하지만 처리 과정에서 이러한 배열은 완전히 재배열되고 모양이 바뀔 수 있습니다. 예를 들어, 위에서 숫자를 식별하는 데 사용한 네트워크는 2D "이미지와 같은" 배열로 시작하여 많은 채널로 빠르게 "두꺼워지다가" 궁극적으로 다양한 출력 가능한 숫자를 나타내는 요소를 포함하는 1D 배열로 "집중화"됩니다:
하지만 특정 작업에 얼마나 큰 신경망이 필요한지 어떻게 알 수 있습니까? 그것은 예술의 무언가입니다. 어떤 수준에서 핵심은 "작업이 얼마나 어려운지"를 아는 것입니다. 그러나 인간과 같은 작업의 경우 일반적으로 추정하기 매우 어렵습니다. 예, 컴퓨터에 의해 매우 "기계적으로" 작업을 수행하는 체계적인 방법이 있을 수 있습니다. 그러나 최소한 "인간과 같은 수준"에서 훨씬 더 쉽게 작업을 수행할 수 있는 요령이나 지름길로 생각할 수 있는 것이 있는지 알기 어렵습니다. 특정 게임을 "기계적으로" 플레이하려면 거대한 게임 트리를 열거해야 할 수도 있습니다. 그러나 "인간 수준의 플레이"를 달성하는 훨씬 더 쉬운("휴리스틱") 방법이 있을 수 있습니다.
작은 신경망과 간단한 작업을 다룰 때는 때때로 "여기서는 거기까지 갈 수 없다"는 것을 명백하게 알 수 있습니다. 예를 들어, 다음은 작은 신경망 몇 개로 이전 섹션의 작업을 수행할 수 있는 최선인 것 같습니다:
그리고 우리가 보는 것은 그물이 너무 작으면 우리가 원하는 기능을 재현할 수 없다는 것입니다. 그러나 일정 크기 이상에서는 문제가 없습니다. 최소한 충분한 예제와 함께 충분히 오랫동안 훈련한다면 문제가 없습니다. 그런데 이 그림은 신경망 지식의 일부를 보여줍니다. 즉, 모든 것이 더 작은 중간 수의 뉴런을 통과하도록 하는 중간에 "압착"이 있으면 더 작은 네트워크로 종종 벗어날 수 있다는 것입니다. (또한 "중간 계층 없음" 또는 소위 " 퍼셉트론 "이라고 하는 네트워크는 본질적으로 선형 함수만 학습할 수 있지만 중간 계층이 하나만 있어도 원칙적으로 항상 가능하다는 점을 언급할 가치가 있습니다. 최소한 하나의 뉴런이 충분하다면 어떤 함수라도 임의로 근사화할 수 있지만, 실행 가능하게 훈련할 수 있도록 일반적으로 일종의 정규화 또는 정규화를 가집니다.)
자, 어떤 신경망 아키텍처에 정착했다고 가정해 봅시다. 이제 네트워크를 교육할 데이터를 얻는 문제가 있습니다. 그리고 신경망 및 일반적으로 머신 러닝과 관련된 많은 실질적인 문제는 필요한 교육 데이터를 수집하거나 준비하는 데 중점을 둡니다. 많은 경우("지도 학습") 입력과 예상되는 출력의 명시적인 예를 얻고자 합니다. 따라서 예를 들어 이미지에 포함된 내용이나 다른 속성으로 태그가 지정된 이미지를 원할 수 있습니다. 그리고 일반적으로 많은 노력을 기울이면서 명시적으로 검토하고 태깅을 수행해야 할 수도 있습니다. 그러나 매우 자주 이미 수행된 작업에 편승하거나 일종의 프록시로 사용할 수 있습니다. 예를 들어 웹에서 이미지에 제공되는 alt 태그를 사용할 수 있습니다. 또는 다른 도메인에서 비디오용으로 만들어진 자막을 사용할 수 있습니다. 또는 언어 번역 교육을 위해 다른 언어로 존재하는 웹 페이지 또는 기타 문서의 병렬 버전을 사용할 수 있습니다.
특정 작업을 위해 신경망을 훈련시키기 위해 얼마나 많은 데이터가 필요합니까? 다시 말하지만 첫 번째 원칙에서 추정하기는 어렵습니다. 확실히 다른 네트워크에서 이미 학습된 중요한 기능 목록과 같은 것을 "전이 학습"하는 "전이 학습"을 사용하여 요구 사항을 크게 줄일 수 있습니다. 그러나 일반적으로 신경망이 잘 훈련되려면 "많은 예를 볼" 필요가 있습니다. 그리고 적어도 일부 작업의 경우 예제가 엄청나게 반복될 수 있다는 것은 신경망 지식의 중요한 부분입니다. 그리고 실제로 신경망에 모든 예를 반복해서 보여주는 것이 표준 전략입니다. 이러한 각 "훈련 라운드"(또는 "신기원")에서 신경망은 적어도 약간 다른 상태에 있을 것이며, 특정 예를 "상기시키는 것"은 "그 예를 기억"하는 데 유용합니다. (그리고, 네,
그러나 종종 같은 예를 반복해서 반복하는 것만으로는 충분하지 않습니다. 예제의 신경망 변형을 보여주는 것도 필요합니다. 그리고 이러한 "데이터 확대" 변형이 유용하기 위해 정교할 필요가 없다는 것이 신경망 지식의 특징입니다. 기본 이미지 처리로 이미지를 약간만 수정하면 신경망 훈련을 위해 본질적으로 "새것처럼" 만들 수 있습니다. 그리고 유사하게, 자율주행차 훈련을 위한 실제 비디오 등이 부족할 때 실제 실제 장면의 모든 세부 사항 없이 모델 비디오 게임과 같은 환경에서 시뮬레이션을 실행하여 데이터를 얻을 수 있습니다.
ChatGPT와 같은 것은 어떻습니까? 글쎄요, 그것은 "비지도 학습"을 할 수 있는 좋은 기능을 가지고 있어 훈련할 예제를 훨씬 쉽게 얻을 수 있습니다. ChatGPT의 기본 작업은 주어진 텍스트를 계속하는 방법을 알아내는 것입니다. 따라서 "훈련 예제"를 얻기 위해 해야 할 일은 텍스트 조각을 가져오고 그 끝을 마스킹한 다음 이것을 "훈련할 입력"으로 사용하는 것입니다. 마스크 되지 않은 텍스트 조각. 나중에 이에 대해 더 논의하겠지만, 요점은 이미지에 무엇이 있는지 학습하는 경우와 달리 "명시적 태깅"이 필요하지 않다는 것입니다. ChatGPT는 실제로 주어진 텍스트의 모든 예에서 직접 학습할 수 있습니다.
자, 신경망의 실제 학습 과정은 어떻습니까? 결국 주어진 훈련 예제를 가장 잘 포착할 가중치를 결정하는 것이 전부입니다. 그리고 이것이 수행되는 방법을 조정하는 데 사용할 수 있는 모든 종류의 세부 선택 및 "초매개변수 설정"(가중치를 "매개변수"로 생각할 수 있기 때문에 소위 불림)이 있습니다. 다양한 손실 함수 선택이 있습니다.(제곱합, 절대값의 합 등). 손실 최소화(각 단계에서 무게 공간에서 얼마나 멀리 이동할지 등)를 수행하는 방법에는 여러 가지가 있습니다. 그런 다음 최소화하려는 손실의 각각의 연속적인 추정치를 얻기 위해 얼마나 큰 예제 "배치"를 보여줄 것인지와 같은 질문이 있습니다. 그리고 예, 기계 학습을 적용하여(예를 들어 Wolfram 언어에서 하는 것처럼) 기계 학습을 자동화하고 하이퍼파라미터와 같은 항목을 자동으로 설정할 수 있습니다.
그러나 결국 전체 훈련 과정은 손실이 점진적으로 감소하는 방식을 확인함으로써 특성화할 수 있습니다( 소규모 훈련을 위한 이 Wolfram 언어 진행률 모니터 에서와 같이).
그리고 일반적으로 보는 것은 손실이 잠시 동안 감소하지만 결국 일정한 값에서 평평해지는 것입니다. 해당 값이 충분히 작으면 교육이 성공한 것으로 간주할 수 있습니다. 그렇지 않으면 네트워크 아키텍처를 변경해야 한다는 신호일 수 있습니다.
"학습 곡선"이 평탄화되는 데 시간이 얼마나 걸릴지 알 수 있습니까? 다른 많은 것들과 마찬가지로, 신경망의 크기와 사용하는 데이터의 양에 따라 달라지는 대략적인 멱법칙 스케일링 관계가 있는 것 같습니다. 그러나 일반적인 결론은 신경망 훈련이 어렵고 많은 계산 노력이 필요하다는 것입니다. 그리고 실질적인 문제로, 그 노력의 대부분은 숫자 배열에 대한 작업을 수행하는 데 소비되며, 이것이 GPU가 잘하는 것입니다. 이것이 신경망 훈련이 일반적으로 GPU의 가용성에 의해 제한되는 이유입니다.
미래에는 신경망을 훈련시키는 근본적으로 더 나은 방법이 있습니까? 아니면 일반적으로 신경망이 하는 일을 합니까? 거의 확실하다고 생각합니다. 신경망의 기본 아이디어는 많은 수의 단순(본질적으로 동일한) 구성 요소에서 유연한 "컴퓨팅 패브릭"을 만들고 이 "패브릭"을 점진적으로 수정하여 예제에서 학습할 수 있도록 하는 것입니다. 현재의 신경망에서는 기본적으로 실수에 적용되는 미적분학 아이디어를 사용하여 증분 수정을 수행합니다. 그러나 고정밀 숫자가 중요하지 않다는 것이 점점 더 분명해지고 있습니다. 현재 방법으로도 8비트 이하면 충분할 수 있습니다.
기본적으로 많은 개별 비트에서 병렬로 작동하는 셀룰러 오토마타와 같은 계산 시스템을 사용하면 이러한 종류의 증분 수정을 수행하는 방법이 명확하지 않지만 가능하지 않다고 생각할 이유는 없습니다. 그리고 실제로 " 2012년의 딥 러닝 혁신 "과 마찬가지로 간단한 경우보다 더 복잡한 경우에 이러한 증분 수정이 더 쉬울 수 있습니다.
신경망(아마도 뇌와 약간 유사)은 본질적으로 고정된 뉴런 네트워크를 갖도록 설정되며 수정된 것은 이들 사이의 연결 강도("가중치")입니다. (어쩌면 최소한 어린 뇌에서도 완전히 새로운 연결이 상당히 많이 자랄 수 있습니다.) 그러나 이것이 생물학을 위한 편리한 설정일 수 있지만 우리가 필요로 하는 기능을 달성하는 가장 좋은 방법에 가깝다는 것은 전혀 분명하지 않습니다. 그리고 진보적인 네트워크 재작성(아마도 우리의 물리학 프로젝트를 연상시키는)과 동등한 것을 포함하는 것이 궁극적으로 더 나을 것입니다.
그러나 기존 신경망의 프레임워크 내에서도 현재 결정적인 제한이 있습니다. 현재 수행되는 신경망 훈련은 근본적으로 순차적이며 각 예제 배치의 효과가 다시 전파되어 가중치를 업데이트합니다. 실제로 현재 컴퓨터 하드웨어에서는 GPU를 고려하더라도 대부분의 신경망이 훈련 중에 대부분 "유휴" 상태이며 한 번에 한 부분만 업데이트됩니다. 그리고 어떤 의미에서 이것은 현재 컴퓨터가 CPU(또는 GPU)와 분리된 메모리를 갖는 경향이 있기 때문입니다. 그러나 뇌에서는 아마도 모든 "기억 요소"(즉, 뉴런)가 잠재적으로 활성 계산 요소가 되기 때문에 다를 것입니다. 그리고 우리가 미래의 컴퓨터 하드웨어를 이런 식으로 설정할 수 있다면 훨씬 더 효율적으로 훈련하는 것이 가능해질 것입니다.
"확실히 충분히 큰 네트워크는 무엇이든 할 수 있습니다!"
ChatGPT와 같은 기능은 너무 인상적이어서 "계속 진행"하고 점점 더 큰 신경망을 훈련할 수 있다면 결국 "모든 것을 할 수 있을 것"이라고 생각할 수도 있습니다. 그리고 즉각적인 인간 사고에 쉽게 접근할 수 있는 것에 관심이 있다면 이것이 사실일 가능성이 매우 높습니다. 그러나 지난 수백 년 동안의 과학의 교훈은 형식적인 과정으로 알아낼 수 있지만 즉각적인 인간의 사고로는 쉽게 접근할 수 없는 것들이 있다는 것입니다.
중요하지 않은 수학이 하나의 큰 예입니다. 그러나 일반적인 경우는 실제로 계산입니다. 그리고 궁극적으로 문제는 계산 비약성 현상입니다. 수행하는 데 많은 단계가 필요하다고 생각할 수 있지만 실제로는 매우 즉각적인 것으로 "축소"될 수 있는 몇 가지 계산이 있습니다. 그러나 계산 비환원성의 발견은 이것이 항상 작동하지 않는다는 것을 의미합니다. 그리고 대신 프로세스가 있습니다. 아마도 아래와 같은 것입니다. 어떤 일이 발생하는지 알아내기 위해서는 본질적으로 각 계산 단계를 추적해야 합니다.
우리가 일반적으로 뇌로 하는 일들은 아마도 계산상의 비환원성을 피하기 위해 특별히 선택되었을 것입니다. 뇌로 수학을 하려면 특별한 노력이 필요합니다. 그리고 실제로는 단지 한 사람의 두뇌에 있는 사소하지 않은 프로그램의 작동 단계를 "숙고"하는 것은 거의 불가능합니다.
그러나 물론 이를 위해 우리는 컴퓨터를 가지고 있습니다. 그리고 컴퓨터를 사용하면 길고 계산적으로 환원 불가능한 일을 쉽게 할 수 있습니다. 그리고 요점은 일반적으로 이것들에 대한 지름길은 없다는 것입니다.
예, 특정 계산 시스템에서 발생하는 구체적인 예를 많이 기억할 수 있습니다. 그리고 아마도 우리는 약간의 일반화를 가능하게 하는 일부("계산적으로 축소 가능한") 패턴을 볼 수도 있습니다. 그러나 요점은 계산 비환원성이란 예상치 못한 일이 발생하지 않는다는 것을 결코 보장할 수 없다는 것을 의미하며 특정 경우에 실제로 어떤 일이 발생하는지 알 수 있는 계산을 명시적으로 수행해야만 가능하다는 것입니다.
그리고 결국 학습 가능성과 계산 비환원성 사이에는 근본적인 긴장이 있습니다. 학습에는 규칙성을 활용하여 사실상 데이터를 압축하는 것이 포함됩니다. 그러나 계산적 비환원성은 궁극적으로 있을 수 있는 규칙성에 한계가 있음을 의미합니다.
실제적인 문제로 셀룰러 오토마타 또는 튜링 기계와 같은 작은 계산 장치를 신경망과 같은 훈련 가능한 시스템으로 구축하는 것을 상상할 수 있습니다. 실제로 그러한 장치는 Wolfram|Alpha가 ChatGPT를 위한 좋은 도구가 될 수 있는 것처럼 신경망을 위한 좋은 "도구" 역할을 할 수 있습니다. 그러나 계산 비환원성은 이러한 장치에 "들어가서" 학습하도록 기대할 수 없음을 의미합니다.
달리 말하면, 능력과 훈련 가능성 사이에는 궁극적인 상충 관계가 있습니다. 시스템이 계산 능력을 "진정하게 사용"하기를 원할수록 시스템은 계산 비환원성을 더 많이 보여주고 훈련 가능성은 낮아집니다. 그리고 근본적으로 훈련이 가능할수록 정교한 계산을 할 수 없게 됩니다.
(현재 ChatGPT의 경우 출력의 각 토큰을 생성하는 데 사용되는 신경망이 루프가 없는 순수한 "피드포워드" 네트워크이기 때문에 상황이 실제로 훨씬 더 극단적입니다. 사소하지 않은 "제어 흐름"을 사용한 계산.)
물론 기약할 수 없는 계산을 할 수 있는 것이 실제로 중요한지 궁금해할 수도 있습니다. 그리고 실제로 인류 역사의 많은 부분에서 그것은 특별히 중요하지 않았습니다. 그러나 우리의 현대 기술 세계는 적어도 수학적 계산을 사용하는 엔지니어링을 기반으로 구축되었으며 점점 더 일반적인 계산도 사용합니다. 그리고 우리가 자연 세계를 보면 환원 불가능한 계산으로 가득 차 있습니다 . 우리는 기술적인 목적을 위해 모방하고 사용하는 방법을 천천히 이해하고 있습니다.
예, 신경망은 우리가 "보조받지 않은 인간의 사고"로도 쉽게 알아차릴 수 있는 자연계의 규칙성을 확실히 알아차릴 수 있습니다. 그러나 수학적 또는 계산 과학의 범위에 있는 일을 해결하려는 경우 신경망은 "일반적인" 계산 시스템을 효과적으로 "도구로 사용"하지 않는 한 수행할 수 없습니다.
그러나 이 모든 것에 대해 잠재적으로 혼란스러운 것이 있습니다. 과거에는 에세이 작성을 포함하여 컴퓨터에 "근본적으로 너무 어렵다"라고 생각했던 많은 작업이 있었습니다. 그리고 이제 우리는 ChatGPT와 같은 사람들에 의해 수행되는 것을 보았을 때 갑자기 컴퓨터가 훨씬 더 강력해졌음에 틀림없다고 생각하는 경향이 있습니다. 특히 컴퓨터가 이미 기본적으로 할 수 있었던 것(셀룰러 오토마타와 같은 계산 시스템의 동작을 점진적으로 계산하는 것과 같이)을 능가합니다..
그러나 이것은 올바른 결론이 아닙니다. 계산적으로 기약할 수 없는 프로세스는 여전히 계산적으로 기약할 수 없으며 컴퓨터가 개별 단계를 쉽게 계산할 수 있더라도 여전히 근본적으로 어렵습니다. 그리고 대신 우리가 결론을 내려야 할 것은 우리 인간이 할 수 있지만 컴퓨터가 할 수 있다고 생각하지 않았던 에세이 쓰기와 같은 작업이 실제로 어떤 의미에서 우리가 생각한 것보다 계산적으로 더 쉽다는 것입니다.
즉, 신경망이 에세이 작성에 성공할 수 있는 이유는 에세이 작성이 우리가 생각했던 것보다 "계산적으로 더 얕은" 문제로 밝혀지기 때문입니다. 그리고 어떤 의미에서 이것은 우리 인간이 에세이 쓰기와 같은 일을 관리하거나 일반적으로 언어를 다루는 방법에 대한 "이론을 갖는 것"에 더 가까워집니다.
신경망이 충분히 크다면 인간이 할 수 있는 모든 일을 할 수 있을지도 모릅니다. 하지만 일반적으로 자연계가 할 수 있는 일이나 우리가 자연계에서 만들어낸 도구가 할 수 있는 일은 포착하지 못할 것입니다. 실용적이든 개념적이든 이러한 도구를 사용함으로써 최근 몇 세기 동안 우리는 '순수한 인간의 사고'로 접근할 수 있는 것의 한계를 뛰어넘어 물리적 및 계산적 우주에 존재하는 더 많은 것을 인간의 목적에 맞게 캡처할 수 있게 되었습니다.
'개발자 > 인공지능과 인간' 카테고리의 다른 글
유용한 ChatGPT prompt 15가지 (0) | 2023.06.19 |
---|---|
ChatGPT 작동원리 5 - ChatGPT 훈련 2 (1) | 2023.06.16 |
ChatGPT 작동원리 5 - ChatGPT 훈련 1 (0) | 2023.06.15 |
ChatGPT 작동 원리 4 임베딩 개념 (0) | 2023.06.14 |
Governance of superintelligence 초지능의 거버넌스 (0) | 2023.06.13 |
ChatGPT 작동 원리 2 - 신경망 (0) | 2023.06.13 |
ChatGPT 작동 원리 1, 한 번에 한 단어씩 추가하기 (3) | 2023.06.12 |
bing 에서 초성게임 만들기. chatgpt 는 빠르고 bing은 정확하고. (2) | 2023.06.09 |
더욱 좋은 정보를 제공하겠습니다.~ ^^