홈 신경망. 신경망: 실제 적용


신경망의 많은 용어는 생물학과 관련되어 있으므로 처음부터 시작해 보겠습니다.

뇌는 복잡하지만 몇 가지 주요 부분과 작동으로 나눌 수 있습니다.

원인 물질은 다음과 같을 수 있습니다. 내부(예: 이미지 또는 아이디어):

이제 기본과 단순화에 대해 살펴 보겠습니다. 부속뇌:


뇌는 일반적으로 케이블 네트워크와 같습니다.

뉴런- 뇌의 계산 기본 단위로, 다른 뉴런으로부터 화학적 신호를 수신하고 처리하며, 여러 요인에 따라 아무것도 하지 않거나 전기 자극을 생성하거나 활동 전위를 생성하여 시냅스를 통해 이웃 뉴런으로 신호를 보냅니다. 것들 관련된뉴런:

꿈, 기억, 자기 조절 동작, 반사 신경, 그리고 실제로 생각하거나 행동하는 모든 것 - 모든 것이 이 과정 덕분에 발생합니다. 수백만, 심지어 수십억 개의 뉴런이 작동합니다. 다양한 레벨다양한 병렬 하위 시스템을 생성하고 생물학적 신경을 나타내는 연결을 생성합니다. 그물.

물론 이것들은 모두 단순화와 일반화이지만 덕분에 우리는 다음과 같이 간단하게 설명할 수 있습니다.
신경망:

그리고 이를 그래프를 사용하여 공식적으로 설명합니다.

여기에는 몇 가지 설명이 필요합니다. 원은 뉴런이고 선은 뉴런 사이의 연결입니다.
이 시점에서는 간단하게 설명하기 위해 관계정보의 직접적인 이동을 표현 왼쪽에서 오른쪽으로. 최초의 뉴런 이 순간활성화되어 있으며 회색으로 강조 표시됩니다. 또한 여기에 숫자를 할당했습니다(작동하면 1, 작동하지 않으면 0). 뉴런 사이의 숫자는 다음과 같습니다. 무게연락.

위의 그래프는 네트워크의 순간을 보여줍니다. 보다 정확한 표시를 위해서는 이를 기간으로 나누어야 합니다.

자신만의 신경망을 만들려면 가중치가 뉴런에 미치는 영향과 뉴런이 학습하는 방식을 이해해야 합니다. 예를 들어 토끼(시험용 토끼)를 고전적인 실험 조건에 넣어보자.

안전한 공기 흐름이 그들에게 전달되면 토끼는 사람처럼 깜박입니다.

이 행동 모델은 그래프로 표현될 수 있습니다.

앞의 그림과 마찬가지로 이 그래프는 토끼가 숨을 느끼는 순간만을 나타내고 있으므로 인코딩하다부울 값으로 냄새를 맡습니다. 또한 가중치 값을 기반으로 두 번째 뉴런의 발화 여부를 계산합니다. 1과 같으면 감각 뉴런이 활성화되고 깜박입니다. 가중치가 1보다 작으면 깜박이지 않습니다. 두 번째 뉴런 한계- 1.

안전이라는 요소를 하나 더 소개하겠습니다. 소리 신호:

토끼의 관심을 다음과 같이 모델링할 수 있습니다.

가장 큰 차이점은 이제 무게가 다음과 같다는 것입니다. , 그래서 우리는 적어도 아직은 깜박이는 토끼를 얻지 못했습니다. 이제 토끼에게 명령에 따라 깜박이는 방법을 가르쳐 봅시다.
자극(삐 소리와 타격):

이러한 이벤트는 서로 다른 시간에 발생하는 것이 중요합니다. 연대, 그래프에서는 다음과 같이 표시됩니다.

소리 자체는 별거 아니지만 공기 흐름여전히 토끼를 깜박이게 하며 가중치와 자극(빨간색)을 곱하여 이를 보여줍니다.

교육복잡한 행동은 시간이 지남에 따라 연결된 뉴런 사이의 점진적인 가중치 변화로 단순화하여 표현될 수 있습니다.

토끼를 훈련시키려면 다음 단계를 반복합니다.

처음 세 번의 시도에 대한 계획은 다음과 같습니다.

반복할 때마다 소리 자극의 가중치가 증가합니다(빨간색으로 강조 표시됨). 이 값은 현재 임의적입니다. 우리는 0.30을 선택했지만 숫자는 음수일 수도 있습니다. 세 번째 반복 후에는 토끼의 행동 변화를 눈치 채지 못할 것입니다. 그러나 네 번째 반복 후에는 놀라운 일이 일어날 것입니다. 즉 행동이 바뀔 것입니다.

공기 노출을 제거했는데도 토끼는 삐 소리가 나면 여전히 눈을 깜박입니다! 마지막 다이어그램은 이 동작을 설명할 수 있습니다.

우리는 토끼가 눈을 깜박임으로써 소리에 반응하도록 훈련시켰습니다.


이런 종류의 실제 실험에서는 결과를 얻으려면 60회 이상의 반복이 필요할 수 있습니다.

이제 우리는 뇌와 토끼의 생물학적 세계를 떠나서 모든 것을 적응시키려고 노력할 것입니다.
인공 신경망을 만드는 법을 배웠습니다. 먼저 간단한 작업을 시도해 보겠습니다.

올바른 버튼을 누르면 음식이 나오는 4개의 버튼이 있는 기계가 있다고 가정해 보겠습니다.
버튼(로봇이라면 에너지). 임무는 어떤 버튼이 보상을 제공하는지 알아내는 것입니다.

다음과 같이 버튼을 클릭했을 때 버튼이 수행하는 작업을 (도식적으로) 묘사할 수 있습니다.

이 문제를 완전히 해결하는 것이 가장 좋습니다. 따라서 올바른 결과를 포함하여 가능한 모든 결과를 살펴보겠습니다.


저녁 식사를 하려면 3번째 버튼을 클릭하세요.

신경망을 코드로 재현하려면 먼저 신경망을 비교할 수 있는 모델이나 그래프를 만들어야 합니다. 다음은 작업에 적합한 하나의 그래프이며, 또한 생물학적 유사성을 잘 표시합니다.

이 신경망은 단순히 들어오는 정보를 수신합니다. 이 경우에는 어떤 버튼을 눌렀는지 인식하는 것입니다. 다음으로, 네트워크는 들어오는 정보를 가중치로 대체하고 레이어 추가를 기반으로 추론합니다. 다소 혼란스럽게 들리겠지만 모델에서 버튼이 어떻게 표현되는지 살펴보겠습니다.


모든 가중치가 0이므로 신경망은 아기와 같으며 완전히 비어 있지만 완전히 상호 연결되어 있습니다.

따라서 외부 이벤트를 신경망의 입력 레이어와 비교하고 출력 값을 계산합니다. 현실과 일치할 수도 있고 일치하지 않을 수도 있지만 지금은 이를 무시하고 컴퓨터가 이해할 수 있는 방식으로 문제를 설명하기 시작합니다. 가중치를 입력하는 것부터 시작하겠습니다(자바스크립트를 사용하겠습니다).

Var 입력 = ; var 가중치 = ; // 편의상 이러한 벡터를 호출할 수 있습니다.
다음 단계는 수집하는 함수를 만드는 것입니다. 입력 값가중치를 부여하고 출력 값을 계산합니다.

함수 평가NeuralNetwork(inputVector, WeightVector)( var result = 0; inputVector.forEach(function(inputValue, WeightIndex) ( layerValue = inputValue*weightVector; result += layerValue; )); return (result.toFixed(2)); ) / / 복잡해 보일 수 있지만 가중치/입력 쌍을 일치시키고 결과를 추가하는 것뿐입니다.
예상대로 이 코드를 실행하면 모델이나 그래프와 동일한 결과를 얻을 수 있습니다.

EvaluateNeuralNetwork(입력, 가중치); // 0.00
라이브 예시: Neural Net 001.

신경망 개선의 다음 단계는 자체 출력이나 결과 값을 실제 상황과 비교할 수 있는 방식으로 확인하는 방법이 될 것이며,
먼저 이 특정 현실을 ​​변수로 인코딩해 보겠습니다.

불일치(및 그 수)를 감지하기 위해 오류 함수를 추가합니다.

오류 = 현실 - 신경망 출력
이를 통해 신경망의 성능을 평가할 수 있습니다.

하지만 더 중요한 것은, 현실이 긍정적인 결과를 낳는 상황은 어떻습니까?

이제 우리는 신경망 모델이 손상되었음을 알았습니다(그리고 얼마나 많은지 알고 있습니다). 훌륭합니다! 좋은 점은 이제 오류 기능을 사용하여 학습을 제어할 수 있다는 것입니다. 그러나 오류 함수를 다음과 같이 재정의하면 이 모든 것이 의미가 있습니다.

오류 = 원하는 출력- 신경망 출력
파악하기 어렵지만 매우 중요한 불일치로, 우리가 그렇게 할 것임을 조용히 보여줍니다.
이전 결과를 사용하여 향후 작업과 비교
(나중에 살펴보겠지만 학습을 위해). 이것은 현실에도 존재합니다.
패턴을 반복하므로 진화 전략이 될 수 있습니다(음,
대부분의 경우).

Var 입력 = ; var 가중치 = ; var 원하는 결과 = 1;
그리고 새로운 기능:

함수 평가NeuralNetError(desired,actual) ( return (desired - Actual); ) // 네트워크와 오류를 모두 평가한 후 다음을 얻게 됩니다. // "Neural Net 출력: 0.00 오류: 1"
라이브 예시: Neural Net 002.

요약해보자. 우리는 작업으로 시작해서 해냈습니다. 간단한 모델생물학적 신경망 형태로 구현되어 현실이나 원하는 결과와 비교하여 성능을 측정할 수 있는 방법을 가지고 있습니다. 이제 우리는 불일치를 바로잡는 방법, 즉 컴퓨터와 인간 모두에게 학습이라고 생각할 수 있는 과정을 찾아야 합니다.

신경망을 훈련하는 방법은 무엇입니까?

생물학적 신경망과 인공 신경망 모두 훈련의 기본은 반복입니다.
그리고 학습 알고리즘이므로 별도로 작업하겠습니다. 시작해보자
훈련 알고리즘.

본질적으로 학습 알고리즘은 물리적 또는 화학적 변화를 나타냅니다.
실험 후 뉴런의 특성:

코드와 "학습 알고리즘" 모델에서 시간이 지남에 따라 두 개의 뉴런이 어떻게 변하는지에 대한 극적인 설명은 우리가 삶을 더 쉽게 만들기 위해 시간이 지남에 따라 상황을 변경한다는 것을 의미합니다. 이제 삶이 얼마나 쉬운지를 나타내는 변수를 추가해 보겠습니다.

Var 학습률 = 0.20; // 값이 클수록 학습 속도가 빨라집니다 :)
그리고 이것이 어떻게 변할까요?

그러면 가중치(토끼처럼!), 특히 우리가 생성하려는 출력 가중치가 변경됩니다.

이러한 알고리즘을 코딩하는 방법은 귀하의 선택입니다. 단순화를 위해 학습 요소를 가중치에 추가합니다. 여기서는 함수 형식입니다.

함수 learn(inputVector, WeightVector) ( WeightVector.forEach(function(weight, index, Weights) ( if (inputVector > 0) ( Weights = Weight + learningRate; ) )); )
이 훈련 함수를 사용하면 단순히 학습 요소를 가중치 벡터에 추가합니다. 활성 뉴런, 훈련(또는 반복) 전후의 결과는 다음과 같습니다.

// 원래 가중치 벡터: // 신경망 출력: 0.00 오류: 1 learn(input, Weights); // 새 가중치 벡터: // 신경망 출력: 0.20 오류: 0.8 // 명확하지 않은 경우 신경망 출력은 1(치킨 출력)에 가깝습니다. 이것이 우리가 원했던 것이므로 움직이고 있다고 결론을 내릴 수 있습니다. 올바른 방향을 향해
라이브 예시: Neural Net 003.

좋습니다. 이제 올바른 방향으로 나아가고 있으므로 이 퍼즐의 마지막 조각은 구현입니다. 반복.

그렇게 복잡하지는 않습니다. 본질적으로 동일한 작업을 반복해서 수행하지만 코드에서는 반복 횟수만 지정합니다.

Var 시험 = 6;
그리고 훈련 신경망에 반복 횟수 함수를 구현하는 방법은 다음과 같습니다.

함수 훈련(시행) ( for (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
최종 보고서는 다음과 같습니다.

신경망 출력: 0.00 오류: 1.00 가중치 벡터: 신경망 출력: 0.20 오류: 0.80 가중치 벡터: 신경망 출력: 0.40 오류: 0.60 가중치 벡터: 신경망 출력: 0.60 오류: 0.40 가중치 벡터: 신경망 출력: 0.80 오류 : 0.20 가중치 벡터: 신경망 출력: 1.00 오류: 0.00 가중치 벡터: // Chicken Dinner !
라이브 예시: Neural Net 004.

이제 입력 벡터가 현실과 일치하는 경우(세 번째 버튼 클릭) 하나의 출력(저녁 식사용 닭고기)만 생성하는 가중치 벡터가 있습니다.

그럼 우리가 방금 한 가장 멋진 일은 무엇인가요?

이 특별한 경우에 우리의 신경망은 (훈련 후) 입력 데이터를 인식하고 원하는 결과로 이어지는 것이 무엇인지 말할 수 있습니다(여전히 특정 상황을 프로그래밍해야 합니다).

또한 이는 확장 가능한 모델이자 학습을 위한 장난감이자 도구입니다. 우리는 머신러닝, 신경망, 인공지능에 대해 새로운 것을 배울 수 있었습니다.

사용자에게 경고:

  • 학습된 가중치를 저장하는 메커니즘이 없으므로 이 신경망은 알고 있는 모든 것을 잊어버립니다. 코드를 업데이트하거나 다시 실행할 때 네트워크가 완전히 학습하려면 최소한 6번의 성공적인 반복이 필요합니다. 사람이나 기계가 무작위로 버튼을 누를 것이라고 생각한다면… 시간이 좀 걸릴 것입니다.
  • 중요한 것을 학습하기 위한 생물학적 네트워크의 학습률은 1이므로 성공적인 반복은 단 한 번만 필요합니다.
  • 생물학적 뉴런과 매우 유사한 학습 알고리즘이 있으며, 이름이 눈에 띕니다. 위드로프-호프 규칙, 또는 위드로프-호프 훈련.
  • 신경 임계값(이 예에서는 1) 및 재훈련 효과(많은 반복 횟수로 결과가 1보다 커짐)는 고려되지 않지만 본질적으로 매우 중요하며 크고 복잡한 행동 반응 블록을 담당합니다. . 음의 가중치도 마찬가지입니다.

추가 읽기를 위한 메모 및 참고 문헌 목록

수학과 엄격한 용어는 피하려고 노력했지만 관심이 있으시면 이중 분류기의 지도 학습 알고리즘(지도 학습)으로 정의되는 퍼셉트론을 구축했습니다.

뇌의 생물학적 구조는 부분적으로는 부정확하고 부분적으로는 복잡하기 때문에 단순한 주제가 아닙니다. 신경과학(Purves)과 인지신경과학(Gazzaniga)으로 시작하는 것이 좋습니다. 나는 Gateway에서 Memory(Gluck)로 토끼 예제를 수정하고 적용했는데, 이는 또한 그래프의 세계에 대한 훌륭한 소개이기도 합니다.

신경망 소개(Gurney)는 모든 AI 요구 사항을 충족하는 또 다른 훌륭한 리소스입니다.

그리고 이제 Python으로! Python 버전을 제공한 Ilya Andshmidt에게 감사드립니다.

입력 = 가중치 = 원하는_결과 = 1 학습 속도 = 0.2 시행 = 6 def 평가_신경망(input_array, 가중치_배열): 결과 = 0 for i in range(len(input_array)): 레이어_값 = 입력_배열[i] * 가중치_배열[i] 결과 += 레이어_값 print("evaluate_neural_network: " + str(result)) print("weights: " + str(weights)) 반환 결과 defevaluate_error(원하는, 실제): 오류 = 원하는 - 실제 print("evaluate_error: " + str(error) ) 오류 반환 def learn(input_array, Weight_array): print("learning...") for i in range(len(input_array)): if input_array[i] > 0: Weight_array[i] += learning_rate def train(trials ): 범위(시행)의 i에 대해: 신경망_결과 = 평가_신경망(입력, 가중치) 학습(입력, 가중치) 기차(시행)
그리고 지금 GO! 이 버전을 제작해주신 Kieran Maher에게 감사드립니다.

패키지 메인 import ("fmt" "math") func main() ( fmt.Println("입력 및 가중치 생성 중 ...") inputs:= float64(0.00, 0.00, 1.00, 0.00) Weights:= float64(0.00, 0.00, 0.00, 0.00) 원하는:= 1.00 learningRate:= 0.20 시도:= 6 train(시행, 입력, 가중치, 원하는, learningRate) ) func train(시행 int, 입력 float64, 가중치 float64, 원하는 float64, learningRate float64) ( 나는:= 1;나는< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print("\nError: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print("\n\n") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 ( WeightVector = WeightVector + learningRate ) return WeightVector ) func 평가(inputVector float64, WeightVector float64) float64 ( result:= 0.00 for index, inputValue:= range inputVector ( layerValue:= inputValue * WeightVector result = result + layerValue ) return result ) func estimateError(원하는 float64, 실제 float64) float64(원하는 반환 - 실제 )

사이트 개발을 위해 일부 자금을 돕고 이체할 수 있습니다.

 

2016년 상반기에 전 세계는 Google(Go 네트워크 플레이어 AlphaGo), Microsoft(여러 이미지 식별 서비스), MSQRD, Prisma 등 스타트업이 알고리즘을 시연하는 등 신경망 분야의 많은 발전에 대해 들었습니다.

북마크에

사이트 편집자들은 신경망이 무엇인지, 신경망이 필요한 이유, 신경망이 몇 년 전이나 후가 아닌 지금 당장 지구를 점령한 이유, 신경망에서 얼마를 벌 수 있는지, 주요 시장 참가자가 누구인지 알려줍니다. MIPT, Yandex, Mail.Ru Group 및 Microsoft의 전문가들도 의견을 공유했습니다.

신경망이란 무엇이며 어떤 문제를 해결할 수 있나요?

신경망은 인공 지능 시스템 개발 방향 중 하나입니다. 아이디어는 인간 신경계의 기능, 즉 학습하고 오류를 수정하는 능력을 최대한 가깝게 모델링하는 것입니다. 이것은 주요 특징모든 신경망 - 독립적으로 학습하고 이전 경험을 바탕으로 행동할 수 있으므로 매번 실수하는 횟수가 점점 줄어듭니다.

신경망은 인간의 신경계의 활동뿐만 아니라 구조도 모방합니다. 이러한 네트워크는 수많은 개별 컴퓨팅 요소("뉴런")로 구성됩니다. 대부분의 경우 각 "뉴런"은 네트워크의 특정 계층에 속합니다. 입력 데이터는 네트워크의 모든 계층에서 순차적으로 처리됩니다. 각 "뉴런"의 매개변수는 이전 입력 데이터 세트에서 얻은 결과에 따라 변경될 수 있으므로 전체 시스템의 작동 순서가 변경됩니다.

Mail.Ru 그룹의 Mail.ru 검색 부서 책임자인 Andrey Kalinin은 신경망이 다른 기계 학습 알고리즘과 동일한 문제를 해결할 수 있으며 차이점은 훈련에 대한 접근 방식에만 있다고 지적합니다.

신경망이 해결할 수 있는 모든 작업은 어느 정도 학습과 관련이 있습니다. 신경망의 주요 적용 분야에는 예측, 의사 결정, 패턴 인식, 최적화 및 데이터 분석이 있습니다.

러시아 Microsoft의 기술 협력 프로그램 책임자인 Vlad Shershulsky는 신경망이 이제 모든 곳에서 사용되고 있다고 말합니다. “예를 들어 많은 대규모 인터넷 사이트에서는 사용자 행동에 대한 반응을 청중에게 더 자연스럽고 유용하게 만들기 위해 신경망을 사용합니다. 신경망이 가장 기초가 됩니다. 현대 시스템음성 인식 및 합성은 물론 이미지 인식 및 처리도 가능합니다. 산업용 로봇이나 자율주행차 등 일부 내비게이션 시스템에 사용됩니다. 신경망 기반 알고리즘으로 보호 정보 시스템악의적인 공격으로부터 보호하고 네트워크에서 불법 콘텐츠를 식별하는 데 도움을 줍니다.”

Shershulsky는 가까운 미래(5~10년)에 신경망이 더욱 광범위하게 사용될 것이라고 믿습니다.

액추에이터에 많은 비디오 카메라가 장착된 농업용 결합체를 상상해 보십시오. 식물의 궤적을 따라 분당 5000장의 사진을 찍어 신경망을 이용해 잡초인지, 질병이나 해충에 영향을 받는지 분석한다. 그리고 각 식물은 개별적으로 처리됩니다. 환상적인가요? 더 이상은 아닙니다. 그리고 5년 후에는 이것이 표준이 될 수도 있습니다. - 블라드 셰르슐스키, 마이크로소프트

MIPT 생활 시스템 센터의 신경 시스템 및 딥 러닝 연구실 책임자인 Mikhail Burtsev는 2016-2018년 신경 네트워크 개발에 대한 임시 지도를 제공합니다.

  • 이미지의 객체를 인식하고 분류하는 시스템;
  • 사물인터넷을 위한 음성 상호작용 인터페이스;
  • 콜센터의 서비스 품질 모니터링 시스템;
  • 결함 감지 시스템(시간 예측 시스템 포함) 유지), 변칙, 사이버-물리적 위협;
  • 지적 보안 및 모니터링 시스템;
  • 콜센터 운영자의 일부 기능을 봇으로 대체합니다.
  • 비디오 분석 시스템;
  • 자재 흐름 관리 또는 물체 위치(창고, 운송)를 최적화하는 자가 학습 시스템
  • 생산 공정 및 장치(로봇 공학 포함)를 위한 지능형 자가 학습 제어 시스템;
  • 회의 및 개인 용도를 위한 보편적인 즉석 번역 시스템의 출현;
  • 봇 컨설턴트의 등장 기술적 지원또는 사람과 유사한 기능을 가진 개인 비서.

Yandex 기술 배포 이사 Grigory Bakunov는 향후 5년 동안 신경망 배포의 기초는 이러한 시스템을 채택할 수 있는 능력이 될 것이라고 믿습니다. 다양한 솔루션: “이제 신경망이 사람을 위해 하는 가장 중요한 일은 불필요한 의사 결정으로부터 사람을 구하는 것입니다. 따라서 살아있는 사람이 그다지 지능적이지 않은 결정을 내리는 거의 모든 곳에서 사용할 수 있습니다. 향후 5년 안에 인간의 의사결정을 단순한 기계로 대체할 기술이 활용될 것입니다.”

지금 신경망이 그토록 인기를 끄는 이유는 무엇일까요?

과학자들은 70년 넘게 인공 신경망을 개발해 왔습니다. 신경망을 공식화하려는 첫 번째 시도는 두 명의 미국 과학자(Warren McCulloch 및 Walter Pitts)가 인간의 생각과 신경 활동의 논리적 계산에 관한 기사를 발표했던 1943년으로 거슬러 올라갑니다.

그러나 최근까지 Mail.Ru Group의 Andrey Kalinin은 신경망의 속도가 너무 느려 널리 보급되지 못했기 때문에 이러한 시스템은 주로 컴퓨터 비전과 관련된 개발에 사용되었으며 다른 영역에서는 다른 알고리즘이 사용되었다고 말합니다. 기계 학습.

신경망 개발 과정에서 노동 집약적이고 시간이 많이 걸리는 부분은 훈련입니다. 신경망이 할당된 문제를 올바르게 해결하려면 수천만 개의 입력 데이터 세트에 대한 작업을 "실행"해야 합니다. Andrei Kalinin과 Grigory Bakunov가 신경망의 확산을 연관시킨 것은 다양한 가속 학습 기술의 출현과 함께입니다.

지금 일어난 가장 중요한 일은 재훈련에 훨씬 덜 민감한 신경망을 생성할 수 있는 다양한 트릭이 등장했다는 것입니다. - Grigory Bakunov, Yandex

“첫째, 학습할 수 있는 대규모의 공개적으로 사용 가능한 레이블이 있는 이미지 배열(ImageNet)이 나타났습니다. 둘째, 최신 비디오 카드를 사용하면 신경망을 훈련하고 수백 배 더 빠르게 사용할 수 있습니다. 셋째, 이미지를 인식하는 사전 훈련된 기성 신경망이 등장했으며, 이를 기반으로 작업을 위해 신경망을 준비하는 데 오랜 시간을 소비하지 않고도 자신만의 애플리케이션을 만들 수 있습니다. 이 모든 것이 특히 이미지 인식 분야에서 신경망의 매우 강력한 개발을 보장합니다.”라고 Kalinin은 말합니다.

신경망 시장 규모는 어느 정도인가?

“계산이 아주 쉬워요. 콜센터 상담원 등 저숙련 노동력을 사용하는 모든 분야를 택할 수 있으며, 단순히 인력을 모두 빼면 됩니다. 나는 이렇게 말할 것이다 우리 얘기 중이야단일 국가 내에서도 수십억 달러 규모의 시장에 해당합니다. 전 세계적으로 얼마나 많은 사람들이 저숙련 직업에 고용되어 있는지 이해하기 쉽습니다. 따라서 매우 추상적으로 말해서 우리는 전 세계적으로 천억 달러 규모의 시장에 대해 이야기하고 있다고 생각합니다.”라고 Yandex의 기술 유통 이사인 Grigory Bakunov는 말합니다.

일부 추정에 따르면 직업의 절반 이상이 자동화될 것이며 이는 기계 학습 알고리즘(특히 신경망) 시장이 증가할 수 있는 최대 규모입니다. - Andrey Kalinin, Mail.Ru Group

“머신 러닝 알고리즘은 모든 프로세스를 자동화하고 개발하는 다음 단계입니다. 소프트웨어. 따라서 시장은 적어도 전체 소프트웨어 시장과 일치하지만 오히려 이를 초과합니다. 기존 소프트웨어에서는 접근할 수 없는 새로운 지능형 솔루션을 만드는 것이 가능해지기 때문입니다.”라고 Mail의 Mail.ru 검색 부서 책임자인 Andrey Kalinin은 말합니다. 루 그룹.

신경망 개발자가 대중 시장을 위한 모바일 애플리케이션을 만드는 이유

지난 몇 달 동안 신경망을 사용하는 몇몇 유명 엔터테인먼트 프로젝트가 시장에 출시되었습니다. 이는 인기 있는 비디오 서비스입니다. 소셜 네트워크 Facebook 및 러시아의 이미지 처리 애플리케이션(6월 Mail.Ru Group 투자) 등.

자체 신경망의 능력은 Google(AlphaGo 기술이 Go 챔피언을 상대로 승리했으며 2016년 3월 회사는 신경망으로 그린 ​​그림 29점 등을 경매에서 판매함)과 Microsoft(CaptionBot 프로젝트)에서 시연되었습니다. 사진 속 이미지를 인식해 자동으로 캡션을 생성하는 서비스, 사진에서 개의 품종을 판별하는 WhatDog 프로젝트, 사진 속 사람의 나이를 판별하는 HowOld 서비스 등), Yandex(in 6월에는 Avto.ru 애플리케이션에 사진 속 자동차를 인식하는 서비스를 구축하고, 신경망 앨범에 녹음된 음악 기록을 발표했으며, 5월에는 유명 예술가의 스타일로 그림을 그리는 LikeMo.net 프로젝트를 만들었습니다.

이러한 엔터테인먼트 서비스는 신경망이 목표로 하는 글로벌 문제를 해결하기 위해 만들어진 것이 아니라 신경망의 기능을 보여주고 훈련을 수행하기 위해 만들어졌습니다.

“게임은 종으로서의 우리 행동의 특징적인 특징입니다. 한편으로는 게임 상황을 사용하여 인간 행동의 거의 모든 일반적인 시나리오를 시뮬레이션할 수 있으며, 다른 한편으로는 게임 제작자, 특히 플레이어는 이 과정에서 많은 즐거움을 얻을 수 있습니다. 순전히 실용적인 측면도 있습니다. 잘 설계된 게임은 플레이어에게 만족을 줄 뿐만 아니라 플레이어가 플레이하면서 신경망 알고리즘을 훈련시킵니다. 결국 신경망은 사례를 통한 학습을 ​​기반으로 합니다.”라고 Microsoft의 Vlad Shershulsky는 말합니다.

“우선, 이는 기술의 역량을 보여주기 위해 수행됩니다. 사실 다른 이유는 없습니다. Prisma에 대해 이야기하고 있다면 그들이 그렇게 한 이유가 분명합니다. 그들은 사진 작업을 할 수 있는 일종의 파이프라인을 구축했습니다. 이를 입증하기 위해 그들은 스타일화를 만드는 매우 간단한 방법을 선택했습니다. 왜 안 돼? 이것은 알고리즘이 어떻게 작동하는지 보여주는 것일 뿐입니다.”라고 Yandex의 Grigory Bakunov는 말합니다.

Mail.Ru Group의 Andrey Kalinin은 다른 의견을 가지고 있습니다. “물론 대중의 관점에서 볼 때 이는 인상적입니다. 반면, 엔터테인먼트 제품이 더 유용한 분야에 적용될 수 없다고는 말하고 싶지 않습니다. 예를 들어, 이미지 스타일을 지정하는 작업은 다양한 산업(디자인, 컴퓨터 게임, 애니메이션은 단지 몇 가지 예일 뿐입니다.) 신경망을 최대한 활용하면 콘텐츠 제작 비용과 방법을 크게 최적화할 수 있습니다.”

신경망 시장의 주요 플레이어

Andrey Kalinin이 지적했듯이, 시장에 나와 있는 대부분의 신경망은 대체로 서로 크게 다르지 않습니다. “모든 사람의 기술은 거의 같습니다. 그러나 신경망을 사용하는 것은 모든 사람이 감당할 수 있는 즐거움이 아닙니다. 신경망을 독립적으로 훈련하고 이에 대해 많은 실험을 실행하려면 대규모 훈련 세트와 값비싼 비디오 카드가 장착된 일련의 기계가 필요합니다. 그런 기회가 있다는 것은 분명하다 대기업"라고 그는 말합니다.

주요 시장 참여자 중에서 Kalinin은 Google과 AlphaGo 네트워크를 만든 Google DeepMind 부서 및 Google Brain을 언급합니다. Microsoft는 이 분야에서 자체 개발을 진행하고 있으며 Microsoft Research 연구소에서 수행합니다. 신경망 생성은 IBM, Facebook(Facebook AI Research 부서), Baidu(Baidu Deep Learning Institute) 등에서 수행됩니다. 전 세계 기술 대학에서 많은 개발이 진행되고 있습니다.

Yandex 기술 유통 이사 Grigory Bakunov는 신경망 분야의 흥미로운 발전이 스타트업에서도 발견된다고 지적합니다. “예를 들어 ClarifAI라는 회사를 기억할 것입니다. 한때 Google 출신 사람들이 만든 소규모 스타트업입니다. 이제 그들은 아마도 그림의 내용을 결정하는 데 있어 세계 최고일 것입니다.” 이러한 스타트업에는 MSQRD, Prisma 등이 포함됩니다.

러시아에서는 신경망 분야의 개발이 스타트업뿐만 아니라 대규모 기술 회사에서도 수행됩니다. 예를 들어 Mail.Ru 그룹은 검색 및 이미지 분석에서 텍스트를 처리하고 분류하기 위해 신경망을 사용합니다. 이 회사는 또한 봇 및 대화 시스템과 관련된 실험적인 개발을 수행하고 있습니다.

Yandex는 또한 자체 신경망을 만들고 있습니다. “기본적으로 이러한 네트워크는 이미 이미지 및 사운드 작업에 사용되지만 다른 영역에서도 그 기능을 탐색하고 있습니다. 이제 우리는 텍스트 작업에 신경망을 사용하는 방법에 대해 많은 실험을 하고 있습니다.” Skoltech, MIPT, Moscow State University, Higher School of Economics 등의 대학에서 개발이 진행되고 있습니다.

인공 신경망은 서로 상호 작용하는 뉴런의 집합입니다. 그들은 데이터를 수신하고, 처리하고, 생성할 수 있습니다. 일만큼이나 상상하기 힘든 일이다. 인간의 뇌. 우리 뇌의 신경망은 지금 이 글을 읽을 수 있도록 작동합니다. 우리의 뉴런은 글자를 인식하고 단어로 표현합니다.

인공 신경망은 뇌와 같습니다. 원래는 일부 복잡한 컴퓨팅 프로세스를 단순화하도록 프로그래밍되었습니다. 오늘날 신경망에는 훨씬 더 많은 가능성이 있습니다. 그 중 일부는 스마트폰에 있습니다. 이 기사를 열었던 또 다른 부분이 데이터베이스에 이미 기록되어 있습니다. 이 모든 일이 어떻게 일어나는지, 왜 일어나는지 계속 읽어보세요.

모든 것이 어떻게 시작되었는지

사람들은 사람의 마음이 어디서 오는지, 뇌가 어떻게 작동하는지 정말로 알고 싶어했습니다. 지난 세기 중반에 캐나다의 신경심리학자 도널드 헵(Donald Hebb)은 이것을 깨달았습니다. Hebb은 뉴런의 상호 작용을 연구하고 뉴런이 그룹(과학적 용어로 앙상블)으로 결합되는 원리를 조사했으며 신경망 훈련을 위한 과학 최초의 알고리즘을 제안했습니다.

몇 년 후, 미국 과학자 그룹은 정사각형 모양을 다른 모양과 구별할 수 있는 인공 신경망을 모델링했습니다.

신경망은 어떻게 작동하나요?

연구자들은 신경망이 모양, 색상, 크기, 질감, 소리, 부피 등과 같은 특정 기준을 인식하는 역할을 하는 뉴런 층의 집합이라는 것을 발견했습니다. 수많은 실험과 계산, 가장 간단한 네트워크점점 더 많은 뉴런 층이 추가되었습니다. 그들은 교대로 일합니다. 예를 들어, 첫 번째는 정사각형이 정사각형인지 아닌지를 결정하고, 두 번째는 정사각형이 빨간색인지 아닌지를 이해하고, 세 번째는 정사각형의 크기를 계산하는 식입니다. 정사각형도 아니고, 빨간색도 아니고, 크기가 부적절한 모양은 결국 새로운 뉴런 그룹이 되어 탐색됩니다.

신경망이란 무엇이며 무엇을 할 수 있나요?

과학자들은 복잡한 이미지, 비디오, 텍스트 및 음성을 구별할 수 있도록 신경망을 개발했습니다. 오늘날에는 다양한 유형의 신경망이 있습니다. 이는 아키텍처(데이터 매개변수 세트 및 이러한 매개변수의 가중치, 특정 우선순위)에 따라 분류됩니다. 아래는 그 중 일부입니다.

컨벌루션 신경망

뉴런은 그룹으로 나뉘며, 각 그룹은 주어진 특성을 계산합니다. 1993년 프랑스 과학자 얀 르쿤(Yann LeCun)은 종이에 손으로 쓴 숫자를 빠르고 정확하게 인식할 수 있는 최초의 컨볼루션 신경망인 LeNet 1을 세계에 선보였습니다. 직접 확인해보세요:

오늘날 컨벌루션 신경망은 주로 멀티미디어 목적으로 사용됩니다. 즉, 그래픽, 오디오 및 비디오와 함께 작동합니다.

순환 신경망

뉴런은 순차적으로 정보를 기억하고 이 데이터를 기반으로 추가 작업을 수행합니다. 1997년에 독일 과학자들은 가장 단순한 순환 네트워크를 장기 단기 기억이 있는 네트워크로 수정했습니다. 이를 기반으로 제어된 반복 뉴런을 갖춘 네트워크가 개발되었습니다.

오늘날 이러한 네트워크의 도움으로 텍스트가 작성 및 번역되고, 인간과 의미 있는 대화를 수행하도록 봇이 프로그래밍되고, 페이지 및 프로그램 코드가 생성됩니다.

이러한 종류의 신경망을 사용하면 데이터를 분석 및 생성하고 데이터베이스를 컴파일하며 예측까지 할 수 있는 기회가 됩니다.

2015년에 SwiftKey는 제어된 뉴런을 갖춘 순환 신경망에서 실행되는 세계 최초의 키보드를 출시했습니다. 그런 다음 시스템은 입력된 마지막 단어를 기반으로 입력하는 동안 힌트를 제공했습니다. 작년에 개발자들은 입력되는 텍스트의 맥락을 연구하기 위해 신경망을 훈련시켰으며 힌트는 의미 있고 유용해졌습니다.

결합 신경망(컨벌루션 + 순환)

이러한 신경망은 이미지에 있는 내용을 이해하고 설명할 수 있습니다. 그 반대의 경우도 마찬가지입니다. 설명에 따라 이미지를 그립니다. 가장 눈에 띄는 예는 암스테르담 주변을 산책하기 위해 신경망을 사용했던 Kyle MacDonald가 시연했습니다. 네트워크는 앞에 무엇이 있는지 즉시 판단했습니다. 그리고 거의 항상 정확히:

신경망은 끊임없이 스스로 학습합니다. 이 과정을 통해:

1. Skype는 10개 언어에 대한 동시 번역 기능을 도입했습니다. 그 중에는 세계에서 가장 어려운 러시아인과 일본인도 있습니다. 물론 번역의 질을 높이려면 상당한 개선이 필요하지만, 이제 일본 동료들과 러시아어로 소통할 수 있고 확실히 이해할 수 있다는 사실이 고무적입니다.

2. Yandex는 신경망을 기반으로 두 가지를 만들었습니다. 검색 알고리즘: "Palekh"및 "Korolev". 첫 번째는 가장 관련성이 높은 사이트를 찾는 데 도움이 되었습니다. 저주파 쿼리. "Palekh"는 페이지 표제를 연구하고 그 의미와 검색어의 의미를 비교했습니다. Palekh를 기반으로 Korolev가 등장했습니다. 이 알고리즘은 제목뿐만 아니라 페이지의 전체 텍스트 콘텐츠도 평가합니다. 검색은 더욱 정확해지고 사이트 소유자는 페이지 콘텐츠에 더욱 지능적으로 접근하기 시작했습니다.

3. Yandex의 SEO 동료들은 시를 작곡하고 음악을 쓰는 음악 신경망을 만들었습니다. 신경 그룹은 상징적으로 Neurona라고 불리며 이미 첫 번째 앨범이 있습니다.

4. Google Inbox는 신경망을 사용하여 메시지에 응답합니다. 기술 개발이 본격화되고 있으며 오늘날 네트워크는 이미 통신을 연구하고 생성하고 있습니다. 가능한 옵션답변. 입력하는 데 시간을 낭비할 필요가 없으며 중요한 합의 사항을 잊어버릴까 봐 걱정할 필요도 없습니다.

5. YouTube는 신경망을 사용하여 동영상의 순위를 매기고 두 가지 원칙을 동시에 따릅니다. 하나의 신경망은 동영상과 이에 대한 시청자의 반응을 연구하고 다른 신경망은 사용자와 선호도에 대한 연구를 수행합니다. 이것이 바로 YouTube 추천이 항상 올바른 이유입니다.

6. 페이스북은 전문 용어를 이해하고 채팅에서 음란한 언어를 제거하는 커뮤니케이션 프로그램인 DeepText AI를 적극적으로 개발하고 있습니다.

7. 신경망을 기반으로 구축된 Prisma 및 Fabby와 같은 앱은 이미지와 비디오를 생성합니다.

Colorize는 흑백 사진의 색상을 복원합니다(놀랐어요 할머니!).

MakeUp Plus는 다양한 실제 브랜드에서 소녀들을 위한 완벽한 립스틱을 선택합니다. Bobbi Brown, Clinique, Lancome 및 YSL은 이미 사업을 진행하고 있습니다.


8.
Apple과 Microsoft는 신경망 Siri와 Contana를 지속적으로 업그레이드하고 있습니다. 지금은 그들은 우리의 명령을 수행할 뿐이지만 가까운 시일 내에 주도권을 잡기 시작할 것입니다. 즉, 권장 사항을 제공하고 우리의 욕구를 예상하는 것입니다.

앞으로는 또 어떤 일이 우리를 기다리고 있을까요?

자가 학습 신경망은 사람을 대체할 수 있습니다. 카피라이터와 교정자부터 시작됩니다. 로봇은 이미 의미가 있고 오류 없이 텍스트를 생성하고 있습니다. 그리고 그들은 사람들보다 훨씬 빨리 일을 합니다. 그들은 콜센터 직원, 기술 지원, 소셜 네트워크 공개 페이지의 중재자 및 관리자와 계속해서 협력할 것입니다. 신경망은 이미 스크립트를 학습하고 음성으로 재현할 수 있습니다. 다른 지역은 어떻습니까?

농업 부문

신경망은 특수 장비로 구현됩니다. 수확기는 자동으로 조종하고, 식물을 스캔하고, 토양을 연구하여 데이터를 신경망으로 전송합니다. 그녀는 해충에 대해 물을 줄 것인지, 비료를 줄 것인지, 살포할 것인지 결정할 것입니다. 수십 명의 직원 대신 최대 두 명의 전문가, 즉 감독자와 기술 전문가가 필요합니다.

Microsoft는 현재 암 치료제 개발에 적극적으로 노력하고 있습니다. 과학자들은 생물 프로그래밍에 참여하고 있으며 종양의 출현과 발달 과정을 디지털화하려고 노력하고 있습니다. 모든 것이 잘 풀리면 프로그래머는 그러한 과정을 차단할 수 있는 방법을 찾을 수 있을 것이고, 비유를 통해 약이 만들어질 것입니다.

마케팅

마케팅은 고도로 개인화되어 있습니다. 이미 신경망은 어떤 사용자에게 어떤 콘텐츠를 어떤 가격으로 보여줄지 몇 초 안에 결정할 수 있습니다. 앞으로는 이 과정에서 마케팅 담당자의 참여가 최소한으로 줄어들 것입니다. 신경망은 사용자 행동 데이터를 기반으로 쿼리를 예측하고 시장을 스캔하여 사람이 구매를 생각할 때 가장 적합한 제안을 제공합니다.

전자상거래

전자상거래는 모든 곳에서 구현될 것입니다. 더 이상 링크를 사용하여 온라인 상점에 갈 필요가 없습니다. 클릭 한 번으로 보이는 모든 것을 구입할 수 있습니다. 예를 들어, 당신은 몇 년 후에 이 기사를 읽고 있습니다. MakeUp Plus 애플리케이션의 스크린샷에 나오는 립스틱이 정말 맘에 드네요(위 참조). 클릭하시면 장바구니로 바로 이동됩니다. 또는 관련 동영상을 시청하세요. 최신 모델 Hololens(혼합 현실 안경)를 사용하고 YouTube에서 바로 주문하세요.

거의 모든 분야에서 신경망, 기계 학습 및 인공 지능 시스템의 구조에 대한 지식이 있거나 최소한 이해하고 있는 전문가가 높이 평가됩니다. 우리는 로봇과 나란히 존재할 것입니다. 그리고 우리가 그들에 대해 더 많이 알수록 우리의 삶은 더 차분해질 것입니다.

추신 Zinaida Falls는 시를 쓰는 Yandex 신경망입니다. Mayakovsky의 훈련을 받은 후 기계가 작성한 작업을 평가하십시오(철자 및 구두점 보존).

« 이것»

이것
그냥 모든 것
무엇
앞으로는
그리고 힘
저 사람
세상의 전부인가 아닌가
사방에 피가 흥건하다
거래
살이 찌다
영광을

부리에 쾅 하는 소리와 함께

인상적이죠?

대학에서는 신경망이라는 주제가 내 전문분야에서 나의 엄청난 관심에도 불구하고 성공적으로 전달되었습니다. 자기 교육에 대한 시도는 이해할 수 없는 용어와 대학 교과서의 건조한 언어로 된 혼란스러운 설명을 가장하여 과학 성채의 파괴할 수 없는 벽에 맞서 무지한 사람들에 의해 여러 번 박살났습니다.

이 기사(연재 기사?)에서는 초심자의 관점에서 신경망 주제를 다루려고 노력할 것입니다. 간단한 언어로, 에 간단한 예, 모든 것을 선반에 올려 놓는 것이지 "뉴런의 배열이 잘 알려져 있고 입증된 계획에 따라 작동하는 퍼셉트론을 형성"하는 것이 아닙니다.

관심있는 분들은 고양이를 참고해주세요.

목표
신경망의 용도는 무엇인가요?
신경망은 학습 시스템입니다. 주어진 알고리즘과 공식에 따라 작동할 뿐만 아니라 과거 경험을 바탕으로 작동합니다. 매번 퍼즐을 맞춰가며 실수를 점점 줄여가는 일종의 아이입니다.

뉴런은 입력 구멍이 여러 개 있고 출력 구멍이 하나 있는 일종의 가상의 블랙박스일 뿐이라는 점에 동의합시다.
게다가 들어오고 나가는 정보는 모두 아날로그일 수 있습니다(대부분 아날로그일 것입니다).

여러 입력 신호로부터 출력 신호가 형성되는 방식은 뉴런의 내부 알고리즘에 의해 결정됩니다.

예를 들어, 러시아어 문자와 같은 간단한 이미지를 인식하는 작은 프로그램을 작성해 보겠습니다. 래스터 이미지.
그것에 동의하자 원래 상태우리 시스템은 "빈" 메모리를 가지게 됩니다. 전투 준비가 된 일종의 갓 태어난 뇌입니다.
제대로 작동하려면 훈련에 시간을 투자해야 합니다.

나에게 날아오는 토마토를 피하면서 델파이로 글을 쓸 것이라고 말할 것입니다. 필요한 경우 예시를 다른 언어로 번역하는 데 도움을 드리겠습니다.

또한 코드의 품질을 가볍게 생각해 주시기 바랍니다. 프로그램은 단지 주제를 이해하기 위해 한 시간 만에 작성되었으므로 이러한 코드는 심각한 문제에는 거의 적용되지 않습니다.

그렇다면 현재 작업에 따라 몇 개의 종료 옵션이 있을 수 있습니까? 맞습니다. 우리가 식별할 수 있는 만큼의 문자입니다. 지금까지 알파벳에는 33개만 있으므로 여기서 멈추겠습니다.

결과적으로 각 뉴런에는 30x30=900개의 입력이 있는 33개의 뉴런을 만들어야 합니다.
뉴런에 대한 클래스를 만들어 보겠습니다.

유형 뉴런 = 클래스 이름: 문자열; // 여기서 뉴런의 이름은 연결된 문자입니다. 입력: 정수 배열; // 여기서 입력 배열은 30x30입니다. output:integer; // 여기서 그는 메모리를 결정했다고 말할 것입니다: 정수 배열; // 여기에는 이전 경험에 대한 경험이 저장됩니다. end;

글자 수에 따라 뉴런 배열을 만들어 보겠습니다.

i:=0 ~ 32의 경우 Neuro_web[i]:=Neuron.Create;를 시작하십시오. Neuro_web[i].output:=0; // 지금은 조용히 놔두세요 Neuro_web[i].name:=chr(Ord("A")+i); // A부터 Z까지의 문자 end;

이제 문제는 프로그램이 실행되지 않을 때 신경망의 "메모리"를 어디에 저장할 것인가입니다.
INI 또는 데이터베이스에 깊이 들어가지 않기 위해 동일한 30x30 비트맵에 저장하기로 결정했습니다.
예를 들어, 다음은 다양한 글꼴로 프로그램을 실행한 후 뉴런 "K"의 메모리입니다.

보시다시피 가장 포화된 영역은 가장 자주 발생하는 픽셀에 해당합니다.
뉴런이 생성될 때 각 뉴런에 "메모리"를 로드합니다.
p:=TBitmap.Create; p.LoadFromFile(ExtractFilePath(Application.ExeName)+"\res\"+ Neuro_web[i].name+".bmp")

훈련되지 않은 프로그램이 시작될 때 각 뉴런의 메모리는 30x30 흰색 점입니다.

뉴런은 다음과 같이 인식됩니다.

첫 번째 픽셀을 가져옵니다.
- 메모리의 첫 번째 픽셀과 비교합니다. (0..255 값이 있습니다.)
- 특정 임계값과의 차이를 비교
- 차이가 임계값보다 작으면 이 시점에서 문자가 메모리에 있는 문자와 유사하다고 가정하고 뉴런의 가중치에 +1을 더합니다.

모든 픽셀에 대해서도 마찬가지입니다.

뉴런의 가중치는 처리된 정보와 메모리에 저장된 정보의 유사도에 따라 결정되는 특정 숫자(이론적으로 최대 900)입니다.
인식이 끝나면 우리는 각각이 특정 비율만큼 옳다고 믿는 일련의 뉴런을 갖게 됩니다. 이 백분율은 뉴런의 무게입니다. 가중치가 클수록 이 특정 뉴런이 정확할 가능성이 높아집니다.

이제 프로그램에 임의의 이미지를 제공하고 이를 통해 각 뉴런을 실행하겠습니다.

x:=0 ~ 29의 경우 y:=0 ~ 29의 경우 do start n:=neuro_web[i].memory; m:=neuro_web[i].input; if ((abs(m-n))<120)) then // Порог разницы цвета if m<250 then neuro_web[i].weight:=neuro_web[i].weight+1; // Кроме того, не будем учитывать белые пиксели, чтобы не получать лишних баллов в весах if m<>0이면 m인 경우 시작됩니다.<250 then n:=round((n+(n+m)/2)/2); neuro_web[i].memory:=n; end else if n<>0이면 m<250 then n:=round((n+(n+m)/2)/2); neuro_web[i].memory:=n; end;

마지막 뉴런의 주기가 끝나자마자 우리는 가장 큰 가중치를 가진 뉴런을 선택합니다.

Neuro_web[i].weight>max인 경우 max:=neuro_web[i].weight;를 시작합니다. max_n:=i; 끝;

프로그램은 이 max_n 값을 기반으로 우리가 무엇을 놓쳤는지 알려줍니다.
처음에는 항상 그렇지는 않으므로 학습 알고리즘을 만들어야 합니다.

S:=InputBox("문자를 입력하세요", '프로그램은 이것이 문자라고 생각합니다 ’+neuro_web.name, Neuro_web.name); for i:=0 ~ 32 do start //neuro_web[i].name=s인 경우 뉴런을 살펴보고 시작합니다. //원하는 뉴런에서 x:=0 ~ 29에 대한 메모리를 업데이트합니다. do start for y:= 0 ~ 29 p.Canvas.Pixels:=RGB(neuro_web[i].memory,neuro_web[i].memory, Neuro_web[i].memory); //새 메모리 픽셀 값 쓰기 end; 끝; p.SaveToFile(ExtractFilePath(Application.ExeName)+"\res\"+ Neuro_web[i].name+".bmp");

다음과 같이 메모리 업데이트 자체를 수행합니다.

N:=round(n+(n+m)/2);

저것들. 뉴런의 기억에 특정 지점이 없지만 교사가 이 편지에 있다고 말하면 우리는 그것을 완전히 기억하지는 않지만 절반만 ​​기억합니다. 추가 교육을 통해 이 강의의 효과가 더욱 커질 것입니다.

다음은 문자 G에 대한 몇 가지 반복입니다.

이것으로 우리 프로그램이 준비되었습니다.

교육
훈련을 시작합시다.
우리는 편지 이미지를 열고 인내심을 갖고 프로그램의 오류를 지적합니다.

일정 시간이 지나면 프로그램은 이전에 알려지지 않은 문자도 일관되게 식별하기 시작합니다.

결론
이 프로그램에는 한 가지 큰 단점이 있습니다. 우리의 신경망은 매우 멍청하고 훈련 중에 사용자 오류로부터 보호되지 않으며 인식 알고리즘은 막대기처럼 간단합니다.
그러나 이는 신경망의 기능에 대한 기본 지식을 제공합니다.

이 기사가 친애하는 Habra 주민들의 관심을 끌면 주기를 계속하여 시스템을 점차 복잡하게 만들고 추가 연결 및 가중치를 도입하고 인기 있는 신경망 아키텍처 중 일부를 고려하는 등을 할 것입니다.

소스코드와 함께 프로그램을 다운로드하면 새로 태어난 우리의 지성을 재미있게 놀 수 있습니다.

vc.ru에서 몇 단계만으로 간단한 신경망을 만들고 사진에서 유명한 기업가를 인식하도록 가르치는 방법을 알아보세요.

0단계. 신경망의 작동 방식을 이해해 보겠습니다.

신경망의 작동 원리를 이해하는 가장 쉬운 방법은 Google의 교육 프로젝트인 Teachable Machine의 예를 사용하는 것입니다.

Teachable Machine은 노트북 카메라의 이미지를 신경망에서 처리해야 하는 입력 데이터로 사용합니다. 출력 데이터(들어오는 데이터를 처리한 후 신경망이 수행해야 하는 작업)로 gif나 사운드를 사용할 수 있습니다.

예를 들어, Teachable Machine이 손바닥을 들었을 때 "안녕하세요"라고 말하도록 가르칠 수 있습니다. 엄지손가락을 치켜세우며 – “멋지다”, 그리고 놀란 얼굴로 입을 벌리고 – “와우”.

먼저 신경망을 훈련해야 합니다. 이렇게 하려면 손바닥을 들고 "Train Green" 버튼을 누르세요. 이 서비스는 수십 장의 사진을 찍어 이미지에서 패턴을 찾습니다. 이러한 이미지 세트를 일반적으로 "데이터 세트"라고 합니다.

이제 남은 것은 이미지 인식 시 호출해야 하는 작업(구문 말하기, GIF 표시 또는 사운드 재생)을 선택하는 것뿐입니다. 마찬가지로, 우리는 놀란 얼굴과 엄지손가락을 인식하도록 신경망을 훈련시킵니다.

신경망이 훈련되면 사용할 수 있습니다. Teachable Machine은 "신뢰도" 계수를 보여줍니다. 즉, 시스템이 기술 중 하나를 가르치고 있다는 사실이 얼마나 "신뢰할 수 있는지"를 나타냅니다.

1단계. 신경망을 사용할 수 있도록 컴퓨터 준비

이제 우리는 이미지를 보낼 때 그림에 표시된 내용을 보고하는 자체 신경망을 만들 것입니다. 먼저, 신경망이 그림 속의 꽃(카모마일, 해바라기, 민들레, 튤립, 장미)을 인식하도록 가르칠 것입니다.

자신만의 신경망을 만들려면 가장 단순하고 널리 사용되는 프로그래밍 언어 중 하나인 Python과 신경망을 만들고 훈련하기 위한 Google의 개방형 라이브러리인 TensorFlow가 필요합니다.

파이썬 설치

공유하다