Собственно сабж, но поясню точнее, но не на столько точно что бы описывать что такое НС и зачем они вообще нужны, но кое что интересное все таки постараюсь рассказать. Так вот, представим что у Вас есть любая группа данных которую нужно положить туда или туда в зависимости от самих данных(или выбрать какое действие делать дальше, не важно), ну к примеру у Вас есть строка(массив данных) (1:0:12:qqq:*:2.2), далее мы можем пойти по классике: if(data[0] == 1):/{ и пошло поехало, казалось бы можно всё сделать логично, могли бы даже сделать switch(data[0]){ и поехать так же... Многие опытные кодеры уже понимают что строка данных может быть ядрёной, она может содержать в себе 100 признаков по которым нужно классифицировать данные, плюс каждый "кусок" данных может быть разнообразным, к примеру в нашем примере (1:0:12:qqq:*:2.2) первый "кусок" это "1", но а если первый "кусок" может быть 1,2,3,4,5,6,7,8,9,111,23,az,@.... как же распределять данные в таком случае? Для КАЖДОГО варианта первого куска данных должно быть свое условие? if(data[0] == 1).. if(data[0] == 2).. мы можем даже сделать switch(data[0])... и для каждого варианта будет свое условие, ну что ж, ок... но а если второй кусок данных тоже влияет на распределение? получится в каждом условии для первого куска делать дополнительные условия для каждого второго куска, а если на распределение влияет комбинация первого и второго(if(data[0] == 1 and type(data[1]) == "int" and data[1] > 1))? А если в определенных случаях комбинация влияет на распределение, а в некоторых нет? А что же если строка данных имеет 100 "кусков" каждый из которых может быть в ста вариантах и иногда комбинация тех или иных кусков будет влиять на распределение, или может даже в некоторых случаях комбинация комбинаций(или комбинация комбинаций в сочетании с каким то куском(внезапное исключение)) будет влиять на что то....(шо за бред несёт это чувак?) Ну окей допустим за месяц мы написали алгоритм который имеет в себе 10000 условий и ветвлений... мы молодцы.... но внезапно нам говорят что в пятом куске данных теперь иногда может встречаться "hello" и теперь это надо учесть в нашем алгоритме, то как он влияет сам, то как он влияет в комбинации, то как он влияет в комбинации комбинация, или он делает исключение в определенной комбинации(астанавись), что же нам делать? Переписывать 10000 условий или сжечь фотографию заказчика параллельно проклиная его? Вот тут нам и нужны нейронные сети, САМЫМИ ПРОСТЕЙШИМИ СЛОВАМИ это такая "штука" которая сама "делает" алгоритм учитывая все возможные комбинации, нам лишь нужно "показывать" ей примеры и "говорить" вот тут так, вот тут так, ну а в таком случае вот так, теперь главные вопросы, как сделать такую "штуку"? Как она "делает"? Как ей "показывать"? Как ей "говорить"? Что курит автор темы? Это всё не важно, Вам лишь нужно знать что я могу это реализовать и гарантировать верные ответы сети в оговоренном проценте случаев(90-98%) Теперь самое главное что должен знать заинтересованный клиент, сама нейронная сеть не выполняет никаких действий, она лишь дает ответ и имея ответ мы знаем какое действие нужно делать для каждого определенного набора данных, все последующие действия над данными это уже типичное программирование. ПРИМЕР Допустим у меня есть изображение каптчи, что реально может простая сеть? ОНА НЕ СКАЖЕТ какое конкретно слово изображено, зато она может выдать ответ, что же это за ответ то такой? Например сколько символов в данном слове, или на каком языке написано данное слово, или же это вообще каптча или левая картинка, такова суть сети, выбрать один из вариантов исходя из опыта(который делается через обучение сети)... Да конечно же, зная ТОЧНОЕ количество символов в каптче можно как то программно вырезать каждый из символов и потом же каждый из этих символов скормить другой сети, которая в свою очередь на вход принимает картинку с символом и выдает один из 33ех ответов (а,б,в,г,д..) Главное понять что сеть сама по себе ничего не делает, а лишь склоняется к какому то из вариантов ответов которые в неё изначально заложены, она может одновременно склоняться сразу к нескольким ответам (п = 50%, л = 70%), если по правде то она сразу выдает вероятность для каждого из ответов, но через обучение и получение опыта это выглядит так (а = 1%, б = 1%, в = 99% и так для всех вложенных в неё ответов), либо же (русский = 1%, английский = 99%), а самое интересное что В ЛЮБОЙ момент мы может добавить в неё новый вариант ответа, ну к примеру добавим французский тип слова и заново опрашивая сеть она не забудет английский стиль слова или русский, все будет в порядке (русский = 1%, английский = 99%, французский = 50%) теперь лишь нужно показать достаточное количество примеров на французском что бы было (русский = 1%, английский = 99%, французский = 1%) CONCLUSION Давайте рассмотрим на конкретной задаче что есть задача сети, а что нет. Примером будет разгадывание каптчи(допустим в нашей вселенной в каптче нету спец.символов и цифр, только лишь буквы и пробелы, и каптча не бывает больше пяти слов) 1) определить сколько слов в каптче (1,2,3,4,5) - работа сети 2) определить язык (русский, английский, санскрит) - работа сети 3) порезать каптчу на слова(вырезать изображение) - программно 4) порезать слова на символы(вырезать изображение) - программно(но есть нейронки которые определяют область для вырезки) 5) в цикле определить каждый символ (а,б,в,г) || (a,b,c,d) || или так (а, a, б, b, в, c) - работа сети (либо для каждого языка своя сеть, либо одна для всех языков, it doesn't matter) 5) ну и соответственно перегнать все ответы в строку - программно Так же важно знать что мы никогда не увидим алгоритм по которому сеть определяет ответ, мы лишь можем пользоваться ним. - - - - - - - - - - - - - - - - - Если Вы считает что в одном из Ваших проектов Вы нуждаетесь в подобной технологии то можете писать мне строго в телегу @aquarian_dev, по крайней мере сможем обсудить и пообщаться, пожалуйста, поймите, данная технология очень сложна и не всегда получается подчинить её себе, но попытаться можно.