Доступным языком что такое и как работают нейронные сети.
Сейчас практически каждый, кто имеет дело с программированием, знает, что такое нейронные сети, либо хоть что-то о них слышал. На ум приходит сюрреалистичный художник Deep Dream от Google как наиболее известный пример. Что, не слышал ни слова? Как это, не программист в 2016? И ни разу не интересовался? И про машинное обучение не слышал? Да как ты можешь вообще (.
В основе механизма работы нейронных сетей лежит попытка смоделировать то, как работает наш мозг. Есть входные нейроны, они получат информацию об объекте. Далее каждый из них генерирует импульс на основе этих данных, но не просто 0 или 1, а дробное число между ними. Это число передается дальше, на следующий слой, где таким же образом обрабатывается нейронами. На выходе мы получаем ответ на основе данных от нейронов последнего слоя.
Сложно? Хорошо, го пример. Типичная задача в машинном обучении - распознать объект, заранее не зная о нём ровно нихуя. А у нас, допустим, текст на латинице - к какому языку относится он? Возьмем английский и испанский - они популярны, проще найти образцы. Зачем? Лишь в том случае, если программы пишут, отлаживают и выпускают в продакшен (хуяк - хуяк, да), то нейронные сети нужно еще и обучить, скармливая им примеры. Почему не словарь? Да, можно определить и таким образом, но поиск по словарю будет выполняться долго, юзер заебётся ждать.
Помнишь же про входные нейроны? Так вот, нужно придумать какие-то признаки, по которым можно различить два языка, прям чтобы работало в 99% случаев. Идеально подойдут специальные символы, например, ? Не встречается в английском, увидим его - точно испанский! Но если мы его не встретим, отличить будет сложно, а есть алфавиты и без специальных символов, значит, нужно другой способ, универсальный. В гугле тоже так решили, потому они решили создать наборы из трех букв, встречающиеся чаще всего в каждом языке. Чтобы долго не объяснять, назвали такие тройки словами. Итак, на вход подают кучу текста на английском, программа подготовки последовательно просматривает по 3 элемента и считает частоту появления каждого слова. Потом она сортирует их по частоте и отбирает первые 50 - для начала хватит. Сохраняет их в словарь, чтобы по обращению "ххх" нам выдавало частоту появления в английском тексте. Повторяет для испанского.
Отлично, мы создали базу. Отдельно выделим те слова, частота которых в одном из языков велика, а в другом мала, они будут своего рода маркерами, как в случае с символами с диакритикой. Введем удельный вес каждого слова как отношение частоты на английском к частоте на испанском. В случае если программе встретится в английском тексте слово с большим весом, значит, скорее всего, это английский.
Пусть при анализе нашего текста сеть считает частоты появления популярных слов на английском, умножает на их веса и складывает между собой. Повторим это же для испанского, но будем умножать на величины, обратные весам - мы ведь испанский определяем. Сравниваем эти две суммы, что перевесит - то и выводим.
Пример, конечно, очень далек от идеала, но позволяет на пальцах объяснить, как работает нейронная сеть. По сути, когда мы нашли самые популярные сочетания букв, каждый из нейронов отреагировал на появление его слова в тексте, затем умножил на свой вес и передал дальше - в функцию суммы, которая одновременно является и выходным нейроном, показывая, какой язык более вероятен.
Все равно нихуя не понял? Ищи лекции яндекса по нейронным сетям, там все объясняется доступно и просто. Что, не помогло? Ну, тут я даже не знаю. Пойди в церковь, что ли, поставь свечку. Авось, поможет.