Нейронки за 5 минут

    Давайте я за 5-10 минут чтения и понимания коротенькой статьи добавлю вам в резюме строчки «машинное обучение» и «нейронные сети»? Тем, кто далек от программирования, я развею все мифы о сложности ИИ и покажу, что большая часть всех проектов на машинном обучении строится на предельно простых принципах. Поехали — у нас всего пять минут.

    Рассмотрим самый базовый пример нейронных сетей — перцептроны; я сам только после этого примера полностью осознал, как работают нейронные сети, так что, если я не накосячу, и вы сможете понять. Помните: никакой магии здесь нет, простая математика уровня пятого класса средней школы.

    Предположим, у нас есть три разных бинарных условия (да или нет) и одно бинарное решение на выходе (да или нет):

    Простая модель с тремя вводными и одним выводом. Эта модель может абсолютно отлично работать для разных людей и выдавать им разные результаты, в зависимости от того, как они обучили нейронную сеть. Но что такое нейронная сеть? Это — просто отдельно стоящие блоки — нейроны, связанные между собой. Давайте создадим простую нейронку из трех нейронов:

    То, что вы видите между вводом и выводом — это нейроны. Пока что они ни с чем не связаны, но это и отражает их главную особенность, о которой все забывают сказать: они — это полностью абстрактная шняга. То есть сами нейроны вообще ничего не решают, принимает решение именно то, что мы нарисуем дальше. А пока что запомните: нейроны вообще ничего не делают в нейронке, кроме упорядочивания и упрощения концепта для человека. Давайте нарисуем самую важную часть нейронки — связи:

    Воу, уже похоже на что-то супер клевое. Сейчас добавим магии, как-то левой пяткой обучим нейронку, покрутимся на месте, похохочем, бросим перца через правое плечо заднего соседа — и все будет работать, да? Оказывается, все еще проще.

    У каждого ввода слева есть значение: 0 или 1, да или нет. Давайте добавим эти значения вводу, предположим, что на вечеринке не будет водки, будут друзья да будет идти дождь:

    Так, с этим разобрались. Что делаем дальше? А вот тут и возникает веселуха: давайте воспользуемся самым старым способом выставления начального состояния нейронок — великий рандом:

    Цифры, которые мы расставили — это веса связей. Помните, что нейроны — это туфта пустая? Так вот, связи — это именно то, из чего и состоит нейронная сеть. Но что за веса связей? Это те штуки, на которые мы умножаем вводные значения и временно храним в пустых нейронах. На самом деле не храним, но для удобства представим, что в нейроны что-то можно положить:

    Как вам математика? Смогли произвести умножение? Погодите, самое «сложное» только началось! Дальше мы складываем значения (в одной из реализаций перцептронов):

    Ну, вот и все! Нейронка создана, а вы можете ее использовать для любых нужд. Если сумма получается больше 0.5 — идти на вечеринку нужно. Если меньше или равно — на вечеринку идти не нужно. Спасибо за внимание!

    Конечно же, модель выше несет в себе мало практической пользы, нам ее нужно обучить. Пугающая фраза «обучить нейронки» — не так ли? Не так. Все топорно и максимально просто: вы берете случайные данные на входе (как мы и сделали), прогоняете ввод через эти три нейрона, смотрите на ответ — пускай он будет положительным (идем на вечеринку) — и проверяете, правильно ли нейронка предугадала ответ или нет. Если правильно — ничего не делаете. Если неправильно — вы слегка сдвигаете веса нейронов (по одному или все сразу) в любую сторону. Например, вот так:

    И снова проверяете: ах, что же, опять говорит идти на вечеринку, когда я же не хочу туда идти! И вы снова сдвигаете слегка веса (в ту же сторону, скорее всего) чуть-чуть, и снова проводите эти вводные данные сквозь нейроны, и снова сверяете результат — и либо оставляете веса в покое, либо снова их двигаете. И так триллионы, квадриллионы раз, да со всякими разными вводными данными. У нас тут, конечно, всего 8 комбинаций ввода, но задачи разные бывают (о них чуть ниже).

    Вот в этом и заключается основной принцип работы нейронных сетей — как умножение необходимо для дифференциации, так и понимание работы перцептрона нужно для создания и сверточных сетей, и рекурсивных нейронов, и еще какой экзотической дичи.

    В итоге, обучив нейронку на решениях, которые принял какой-либо человек, пробежавшись миллиарды раз по ним, перебрав все возможные веса нейронов, вы придете наконец к золотой и оптимальной середине таким образом, что человек введет три начальных значения — а машина прогоняет его по уже стабильной и рабочей формуле с тремя нейронами и выдает ответ.

    Единственными тремя неизвестными в нашей были веса связей нейронов, и именно их мы и перебирали. Поэтому я и говорю, что нейроны — это пустышки ничего не решающие, а короли банкета — это веса связей.

    Дальше все просто: вместо одного слоя нейронов мы делаем два и снова все перебираем по точно тем же самым принципам, только уже все нейроны отдают значения другим нейронам. Если сначала у нас было только 3 связи, то теперь 3 + 9 связей с весами. А потом три слоя, четыре, рекурсивные слои, зацикленные на себе и тому подобная дичь:

    Но, спросите меня, мол, а чего-же в итоге сложного-то в нейронках? Почему так много платят специалистам по машинному обучению? А дело именно в том, как именно реализовывать перцептроны выше: там столько разных нюансов, что замучаетесь перечислять.

    Что, если на входе у вас картинка и нужно категоризировать все картинки на собачек и кошечек? Картинки-то по 512х512 размерам, каждый пиксель ведь ввод — это ж мы сколько по нейронам будем гонять значения? Для этого есть сверточные нейроны! Это такая шняга, которая берет 9 пикселей рядом друг с другом, например, и усредняет их значения RGB. Получается, сжимает картинку для более быстрой обработки. Либо, например, вообще избавляется от красного цвета в картинке, так как он не важен (ищем, например, только зелено-синие платья). Это сверточные сети — дополнительный слой «нейронов» на входе, которые обрабатывают ввод для понятного и упрощенного для сети вида.

    Еще нужно понимать, насколько и в какую сторону смещать веса — для этого есть всякие простенькие для понимания алгоритмы, которые считают ошибку с конца — справа (от результата) налево (до первого слоя нейронов) — один из алгоритмов называется Back Propagation.

    Еще есть всякие чертовски простые алгоритмы нормализации значений — чтобы у вас на выходе или в середине при сложении получались цифры не от 0 до 500 000, а от 0 до 1 — сильно упрощает расчеты и вычислительную математику.

    Как вы уже могли понять, по-настоящему крутые спецы в машинном обучении не просто знают большинство уже существующих методик в постройке оптимизированных нейронных сетей, но и придумывают свои подходы, отталкиваясь от простейшего, но глубокого понимания причинно-следственных связей между тем, как построить перцептрон, и почему это работает, с точки зрения математики. Они могут не просто сделать, чтобы нейронка работала, они могут изменить алгоритм или использовать другой алгоритм, чтобы все еще и быстро, оптимизированно бегало.

    Ну, вот и все — я дал вам фундамент для понимания, что такое нейронные сети. Так же я, надеюсь, показал вам, что не так страшен черт, как его малюют — все оказалось невероятно просто, на уровне умножения и сложения. Дальше советую начать смотреть туториалы на YouTube или Udemy — там чуваки офигенно круто все объясняют.

    В следующий раз, когда с вас попросят денег на проект с машинным обучением, трясите с попрошаек наброски работы нейронных сетей — какие слои, как они организованы, зачем и почему вот тут так, а там не так. Все это на уровне, максимум, 11 класса будет (это про интегралы и дифференциалы) — и то встретится в описании раз, может, два. Пока этой модели у проекта нет (какие слои и как расположены) — у проекта нет продукта, потому что вот эта структура — это первые 2-4 недели специалиста по машинному обучению.

    P.S., пример для объяснения я нагло стянул с одного великолепного видео про нейронные сети. Очень советую посмотреть — спасибо ребятам! подписчики помогли восстановить ссылку на оригинал видео, пример из которого я пытался восстановить из памяти. Если кому интересно, как задачу выше закодить, то приглашаю вас посмотреть вот этот ролик. Спасибо большое авторам!
    Поделиться публикацией
    Комментарии 145
      +13
      Подобных «руководств» как мух в сортире. А что делать когда это прочитал, не понятно. Хоть бы одну ссылку на годное видео/курс автор оставил
        0
        Можете дать ссылочку на подобное руководство, пожалуйста? Ну, чтобы гуманитарии даже могли понять нейронные сети?
          +12
          Ну, чтобы гуманитарии даже могли понять нейронные сети?
          Вопрос в том, зачем гуманитарию их понимать? Блеснуть перед братьями по разуму в курилке или на пьянке? Или вы действительно считаете, что гуманитарий, прочитав пяток абзацев, который вы назвали «руководством», сможет:
          В следующий раз, когда с вас попросят денег на проект с машинным обучением, трясите с попрошаек наброски работы нейронных сетей — какие слои, как они организованы, зачем и почему вот тут так, а там не так.
          Человек, занимающийся нейронками без году неделю, гуманитарию десятку за полчаса так нарисует... уже способен от балды нарисовать и слоёв, и связей, и формул, что последнему останется лишь периодически выдавать «Аааа» да «Ммм...» с умным видом полностью не секущего предмет человека.
          Напротив, даже пройдя стенфордский курс по сверточным нейросетям с местами весьма зубодробительным матаном, выполнив все практические задания, поначалу ничерта не понимаешь даже в самых простых реальных проектах.

          Резюмирую: примитивизировать нет никакого практического смысла, если человек не в состоянии понять статью в википедии про перцептрон, то подобные руководства стать великим нейросетевым комбинатором ему тоже не помогут. А без сакральных знаний «принципа работы синхрофазотрона» © гуманитарий проживет и так)
            +14

            Да вот только почему-то даже слоев нарисовать, связей и формул часто не могут, даже для отписки гуманитариев.


            Скорее, статья написана для демистификации нейронных сетей для гуманитариев. Чтобы они не думали, что это какая-то магия и не верили на слово всяким ICO проектам на машинном обучении — но спрашивали структуры и архитектуру проекта хотя бы.


            Ну, пускай в статье нет никакого смысла, похоже, увеличил энтропию во вселенной. Для меня будет победой, даже если просто какой-нибудь один человек после прочтения загорится машинным обучением или разберётся в чем-то, ранее загадочном.

              –5

              Некоторые вещи нельзя объяснить для гуманитариев. В этом смысле сами нейронные сети проблемы не представляют. Вот обучение нейронных сетей — это уже гораздо более сложный вопрос. Например, попробуйте вы объяснить про обратное распространение ошибки не упоминая понятие производной функции.

                +8

                Не согласен, что не стоит расширять кругозор людей.

                  +1
                  Стоит, но бесполезно. Чистокровный гуманитарий пройдет мимо.
                  Вот полукровки, пожалуй, могут заинтересоваться данной статьей.
                    +6
                    Будем считать, что я написал эту статью именно для «полукровок» :)
                    0
                    Если так смотреть, то потенциал есть у каждого, кто не забаненнен в гугле.
                    Было-бы желание. А именно желание сможет пробудить любопытство, которое повлечёт изучение нового.
                    Да, знание матана бывает полезным, хотя-бы благодаря тому, что позволяет быстрее и проще донести суть (идеи),
                    не углубляясь в самые азы (того-же матана).
                    Например, можно весьма просто описать ту-же суть, используя понятие триггера.
                    Автор-же использовал понятие перцептрона (более сложного элемента, чем элементарный триггер).
                    Но был сделан акцент на том, что статья д.б. понятной даже для гуманитария. Отсюда — ясно, почему столь необычно разворачивается объяснение.
                    Да, спасибо, расширение собственного кругозора — вещь весьма полезная.
                    +2
                    Как вариант, можно объяснить гуманитарию понятие производной, на пальцах в нем ничего сложного нет. Я вот недавно брату объяснил — он, конечно, не гуманитарий, но зато в восьмой класс перешел.
                      0
                      Элементарно: В случае ошибки нам нужно скрутить неправильные веса связей (к ней приведшие), поэтому мы раздаём штраф пропорционально весам от места ошибки назад, до самого входа. Чтобы не задавить всех в 0 нужно правильно подобрать силу «болевого» сигнала и не забывать о нормализации весов в слое.
                    +5
                    Вопрос в том, зачем гуманитарию их понимать? Блеснуть перед братьями по разуму в курилке или на пьянке?

                    И действительно, зачем человеку интересоваться чем-либо, кроме своей работы? Зачем научпоп как явление в целом? Иронические вопросы тащемта.
                      0
                      del, ответил чуть ниже
                        –5
                        Невзоров? перелогиньтесь)))
                        +2
                        Не стоит людей судить по дипломам или профессии.
                        У меня перед глазами пример, когда историк решал олимпиадные задачи по математике быстрее выпускников не последнего технического ВУЗа, решивших немного приколоться. А в момент, когда в решениях технарей нашлись ошибки, которые объяснял тупой гуманитарий, граждане почему-то совсем расстроились.

                        Кстати, мне как технарю прочитать статью было интересно. Потому что занимаясь проектами, наймом, и обучением (и сам, и обучая всяких студентов азам) — не всегда можно найти время на офигенные стендфордские курсы.
                          –2
                          «Технарь» и «гуманитарий» это не диплом или профессия, а склад ума, интересы. Гуманитарию не интересно как работает условный квантовый компьютер, даже если вы ему всё разжуете с картинками и комиксами. Картинки он посмотрит с удовольствием, а суть пропустит мимо себя (также как технарь в болшинстве случаев пропустит мимо какую-нибудь махровую гуманитарщину типа философии Канта). А если интересует, и это не просто хайповая история (разобраться, чтобы не ударить в грязь лицом в курилке), а действительно интересно, то он уже и не гуманитарий вовсе, как и ваш историк.
                            +2

                            Деление людей на "гуманитариев" и "технарей" — это как-раз профессия, а не склад ума. То же самое говорили и про разницу полов, мол, это не биологически разные просто люди, это разные склады ума и интересы. Поэтому женщина должна быть на кухне, а гуманитарий не должен интересоваться техническими науками. Иначе женщина, которая интересуется машинами, уже не женщина вовсе.

                              0
                              Ммм… Вот вы сейчас какие-то «должна» и «должен» мне приписываете. Тогда хотелось бы цитаты. Или между
                              женщина должна быть на кухне, а гуманитарий не должен интересоваться техническими науками
                              и
                              женщинам и гуманитариям чаще не интересны технические науки
                              вы тоже не видите разницы?
                                0
                                Ваша цитата:

                                А если интересует, и это не просто хайповая история (разобраться, чтобы не ударить в грязь лицом в курилке), а действительно интересно, то он уже и не гуманитарий вовсе, как и ваш историк.

                                Или «если человека интересуют нейронные сети, то он не гуманитарий». То есть по вашей логике гуманитарий не может интересоваться нейронными сетями.

                                А меня уже много знакомых гуманитариев — да и тут ребята в комментариях — поблагодарили за статью :) Говорите что угодно, а статья зашла аудитории, для которой писалась, и я очень рад, что приоткрыл завесу тайны нейронных сетей для более, чем одного человека.

                                Но все равно спасибо за ваше мнение.
                                  –1
                                  Нет, не вижу. А она есть?
                                  Пока что всё, что я вижу, это как вы проецируете собственные предрассудки на те или иные категории граждан.
                                +2
                                Научпоп позволяет людям с широким кругом интересов, но при этом недостатком знаний, хоть немного копнуть тему. А уже потом, если дальше интересно будет, закопаться глубже, восстанавливая пробелы.
                                Точно также, как технари иногда начинают интересоваться гуманитарными науками. И этот интерес также начинается не с зауми, а с простых вещей.

                                Вообще, если отойти ещё дальше, можно заметить, что так построен почти весь образовательный процесс :).
                                  0
                                  Кант так-то был математиком и его философия отдает «технарским» восприятием мира, может вы вовсе и не технарь?)
                                    0
                                    Передергиваете, как раз наоборот. Кант не как философ, а как математик, махровому технарю не интересен, т.к. математический подход в философии ещё не делает философа математиком, т.к. не подразумевает обратного: философский подход в математике — оксюморон)
                                +3
                                Хабр читают не только спецы, но и люди интересующиеся технологиями.
                                Вопрос в том, зачем гуманитарию их понимать?

                                Зачем фронтендеру ардуино?
                                Зачем знать физику?
                                Зачем быть снобом? :)
                                +2
                                Примитивизировать есть смысл. На этом основан даже небезызвестный алгоритм обучения Ричарда Фейнмана.

                                «Если вы ученый, квантовый физик <можно подставить что угодно>, и не можете в двух словах объяснить пятилетнему ребёнку, чем вы занимаетесь, — вы шарлатан.»

                                +1
                                  +1

                                  Длинно (несколько частей), много математики и слишком умные слова (дропнут на первой четверти текста), имхо, для гуманитариев. Есть попроще статья?


                                  Нужна такая, чтобы нейронных сетей перестали бояться, а не начали бояться с новой силой.

                                    +3
                                    Не делайте, пожалуйста, из гуманитариев идиотов.
                                      +4

                                      Я не делаю. Но вот моя знакомая филолог дропнула длинную статью по нейронками на первой формуле, так и не разобравшись в принципах работы — ей это было не нужно по профилю. Зато, прочитав эту статью, заполучила минимальное понимание механизмов работы и теперь знает, что никакой магии нет.

                                        0
                                        ну может быть ей просто это не нужно?

                                        ну и опять же — окей, поняла она основную идею, связи между нейронами и веса. И что дальше? Что с этим осознанием она будет делать. Сможет ли она реализовать свою примитивную нейронку? нет. Сможет ли она осознать как эффективнее (не брутфорсом) обучать нейросети? нет. Будет ли догадываться о обратной связи — нет.

                                        Так тогда какой практический смысл для вашей знакомой?
                                          +3
                                          Я не согласен с вами, что не стоит расширять кругозор людей и что каждая крупица информации должна нести ценность прямо сейчас. Может, ей это пригодится в будущем.
                                            0
                                            Может, ей это пригодится в будущем.

                                            в том то и суть, что в целом математика нейронок на базовом уровне простая, даже для гуманитария.


                                            Но для того же кругозора стоит сразу сказать в чем проблема такой упрощенной модели (обучение). Что бы люди сразу понимали что в реальности все намного сложнее, хоть и идея простая.


                                            А для того что бы развлечь публику, можно накинуть на вентилятор делему о том, нужно ли понимать модель, которая делает то что надо, или это излишне. Это я к этой фразе:


                                            трясите с попрошаек наброски работы нейронных сетей

                                            Эта фраза может принести много пагубных последствий. А так как развлекательный контент — не вижу никаких проблем.

                                              0
                                              Считайте эту статью — развлекательным контентом, она именно под таким ключом и писалась :)
                                  0
                                  Можете дать ссылочку на подобное руководство, пожалуйста? Ну, чтобы гуманитарии даже могли понять нейронные сети?

                                  neuralnet.info. Необходим уровень математики средней школы. Его интерпретация Вашего примера с водкой тут.
                                    –4

                                    Но ведь оно длинное! Ни один гуманитарий не будет его читать, а вот ссылочку на эту статью можно кинуть своей бабушке. Это не учебник, это сложное простыми словами за 5 минут или меньше.

                                      +1
                                      Основная проблема вот таких «на пальцах» совмещённых с «теперь вы в резюме строчку добавить можете» в том, что они создают чувство ложной уверенности в себе и понимания темы. Да — Вы что-то объяснили, да — это понятно, но нет — после такого добавлять что-то в резюме не стоит — это будет ложью и может сыграть злую шутку.
                                        +3

                                        Так в самом начале про резюме — это же шутка. Никто в здравом уме, конечно, не будет добавлять после этой статьи "машинное обучение" к себе в резюме. Скорее, начнет глубже разбираться в уже не таком магическом концерте — и уже разобравшись, добавит.

                                          0
                                          Конечно у меня не самое лучшее чувство юмора, но тем не менее я не понял, и из контекста тоже шутки не увидел. А вот таких «мастеров» объяснения «на пальцах» слишком много в последнее время :( Вероятно Вы к таким не относитесь, и моё первое впечатление ошибочно, но осадочек остался :)
                                            +2

                                            Прошу прощения, если пошутил непонятно :) постараюсь в будущих статьях чуть менее завуалированно юмор свой вставлять. Я ещё новенький на Хабре, пытаюсь найти золотую середину между толстыми и слишком тонкими вкраплениями шуток. Спасибо за комментарии!

                                              0
                                              Я ещё новенький на Хабре

                                              Первая статья 2012 года.
                                              Приглашён 25 июля 2014 в 17:13 по приглашению НЛО (Профиль)

                                              Пригласил на сайт 9 человек.
                                              Вы по времени путешествуете что ли?
                                                0

                                                Неприлично девушке напоминать о ее возрасте.

                                        0
                                        Ни один гуманитарий не будет его читать

                                        Гуманитарии и Вашу статью читать не будут, если можно посмотреть видео на ютубе по ссылке, которую Вы же сами и привели. И вообще много ли здесь гуманитариев?

                                        Это не учебник, это сложное простыми словами за 5 минут или меньше.

                                        Поэтому я дополнительно привёл ссылку на аналогичный пример, где тоже простыми словами и тоже за пять минут. Только помимо примера там ещё и учебник, к которому можно обратиться, если тема заинтересовала. Но и в учебнике, и в Вашей статье описание простых вещей хорошо легли на простые слова (туфта, дичь, шняга (с)), но потом…

                                        берет 9 пикселей рядом друг с другом, например, и усредняет их значения RGB.
                                        8)
                                        ссылочку на эту статью можно кинуть своей бабушке

                                        What? Бабушка в шоке.
                                          +1

                                          Ну, на видео 25 минут, а тут 5 минут :3 последние параграфы тут уже не относятся к объяснению, а показывают дорогу "куда дальше" — так что их бабушке понимать уже не нужно. Но спасибо за ссылку :)

                                            –2

                                            Алсо, в ваш пример на 5 минут длиннее, заумнее и с гораздо большим количеством математики, которая пугает гуманитариев и мгновенно отключает их интерес к теме.

                                          0
                                          Норм руководство. Хотя опять же, что делать дальше — не понятно
                                            0
                                            Дальше — на Udemy и YouTube :)
                                              +2
                                              Я бы посоветовал курс fast.ai
                                              В отличии от кроусейровских и подобных курсов тут идет сверху вниз. От «запустить несколько высокоуровневых команд» (в стиле scikit-learn) к большей детализации — как правильно готовить исходные данные, трюки как лучше учить, чтобы быстрее сходилось, как это все устроно внутри. Собственно про такие «детали» (с точки зрения курса) нейрон (точнее там говорится про активации), веса, сами сверточные сети, методы оптимизации (обучения) там говорится уже в середине курса, после того как несколько нейронок уже обучены, получены результаты из первой сотни участников kaggle и есть мотивация продолжать.
                                            0
                                            Из самого простого, что видел очень понравилось:
                                              +1
                                              Фух, хорошо, что я на них ссылочку в конце статьи оставил, правда? :) Ну и 36 минут против 5 минут — это достаточно высокий порог для нетехнического специалиста, у которого нет времени так глубоко вникать.
                                                0
                                                Значит годное видео! :)
                                                Проще один раз увидеть чем пять минут прочитать. :))
                                                  +1

                                                  Отнюдь, если у человека нет 36 минут, но за чашкой утреннего кофе глянуть статью время есть. Это просто вопрос коммитмента.

                                              +2

                                              Вот одна из самых простых и понятных статей про нейронку, которую видел — https://m.habr.com/post/369349/

                                                +1
                                                Клевая статья, спасибо! Думаю, моя чуть менее высокоуровневая, но по ссылке статья —огонь!
                                              0
                                              Если хочется быстро, не за 5 минут, но хотя бы за день пощупать руками и реальный результат ощутить, то мне вот эта статья помогла: habr.com/post/343466
                                              В течении дня приведённый исходник адаптировал под категоризацию некоторых специфических картинок.
                                              И оно реально работает, причём быстро на офисном компе, которому 10 лет.
                                              Хотя картинки, конечно сначала превращаются в довольно крупную мозаику средствами того же самого Golang.
                                                +2

                                                Но там же не описываются принципы, а просто показывается пример работы с библиотекой, который никакой нагрузки смысловой не несёт нетехничнским людям, разве нет?

                                                  –1
                                                  Про принципы отдельно можно почитать. Там пример не такой примитивный как встречающиеся примеры обучения вычислению XOR. Понятный синтаксис. Возможность адаптировать под что-то другое.
                                                  Почувствовать реальную работу нейросети своими руками. Не залезая в более сложные штуки типа тензорфлоу.
                                                  Нетехническим вообще не знаю зачем лезть в эти дебри.
                                                    0

                                                    Я уже объяснял, зачем :) чтобы демистификации машинное обучение и чтобы могли спрашивать с проектов на ИИ реальные модели м архитектуру, а не слепо верить в любую сложно написанную псевдонаучную маркетинговую замануху. Эта статья ведь и есть место, где "про принципы отдельно можно почитать" гуманитариям :) Разве нет?

                                                      –1

                                                      Проблема в том, что вот эти "гуманитарии", которые увидели где-то в интернете заметку длиной в твит (больше текста они, вероятно, не в состоянии осилить), и уверовавшие в собственную осведомленность областью — это и есть главный источник мистификаций и булшита, т.к. начинают теоретизировать в условиях нехватки знаний.

                                                        –1
                                                        Проблема в том, что вот эти «гуманитарии», которые увидели где-то в интернете заметку длиной в твит (больше текста они, вероятно, не в состоянии осилить), и уверовавшие в собственную осведомленность областью — это и есть главный источник мистификаций и булшита, т.к. начинают теоретизировать в условиях нехватки знаний.

                                                        Это вы про нейронные сети? Или прививание населения? Или про аэродинамику самолетов? Или про электричество? Или про гравитацию? Или про жизнь и смерть? Просто ваш комментарий можно с таким же успехом написать под любой вводной статьей в любой сфере.

                                                        Источник мистификаций и булшита — это как-раз отсутствие хоть какого-нибудь образования в области, но ни в коем случае не присутствие толик знания. Но это, конечно, исключительно ИМХО.
                                                +2
                                                Эм, не согласен. Автор объяснил идею. Уже её хватает на то, чтобы пойти прям сейчас и написать какую-нибудь несложную сеть, которая будет, скажем, по росту и весу давать предположительную долготу жизни. Ну или что-нибудь такое.

                                                Лично я из-за большой занятости очень долго откладывал узнать, что же такое нейронки (сейчас только-только освободился, защитил диплом), и мне очень даже зашло :) Сразу же море идей, куда применить, что делать и в какую сторону можно эту идею расширять.

                                                А что автор не привёл кода, который отличает котиков от собачек — ну что ж, статьи-пятиминутки не для этого.
                                                +2
                                                Это вы лет на 30 назад заглянули. Тогда были персептроны и примерно такое «на пальцах» примитивное понимание. Примерно как «вот компьютер, там микросхемы, сигналы 0/1 бегают, в байты собираются. Главный принцип такой, в дальше все просто, сами разберетесь».
                                                  +1
                                                  А в детских книгах было такое. «Сделайте персептрон, отличающий цифру 1 от цифры 2». Батарейка, три канцелярских кнопки, две лампочки и цифры из фольги.
                                                    0
                                                    Помню, был еще автомат игры в крестики-нолики, из спичечных коробков и спичек. Путем выкладывания спичек при обучении — достигалась оптимальная стратегия игры (либо ничья, либо выигрыш, если противник сплоховал).
                                                  +6

                                                  Ну, я не говорил, что, мол, сами разберётесь. Это просто статейка, где я попытался наглядно и простым языком описать минимальные знания по нейронкам. Альтернатива вводным статьям с тучей математики, которая пугает нетехнических людей. Ну и альтернатива тоннам текста, написанным для гуманитариев — тут всего 5 минут чтения.


                                                  Не претендую на пользу статьи для технарей.

                                                    0
                                                    А чем персептрон, кроме названия, отличается от нейросети?
                                                      0
                                                      персептон более узкое понятие
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                          –2

                                                          Скорее, тип нейрона в нейронной сети. Перцептроны можно комбинировать с другими типами нейронов. Если нейронка состоит только из перцептронов (как в статье), то это перцептронная нейронка… Вроде как.

                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                              0

                                                              Хотел было кинуть ссылку на Википедию (https://ru.m.wikipedia.org/wiki/Искусственная_нейронная_сеть — там есть классификация), но там недостаточно популярно, да :(

                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0

                                                                  Чую, судя по комментариям, не оценят :) опять будут писать, мол, не нужно такое. Хотя, может быть, напишу на Медиум уже — там, возможно, лучше примут :)

                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                            +3
                                                            Скорее, тип нейрона в нейронной сети.
                                                            Нет, это архитектура сети, передаточная функция является лишь одной из характеристик классического перцептрона.
                                                              0
                                                              Точно! Спасибо за уточнение.
                                                    –1
                                                    На мой взгляд, тут наглядней и всего за 1 минуту
                                                      +1

                                                      Но там нужно строить аналогии с нейронными сетями, когда тут показан прямой пример нейронной сети. Но за ссылку все равно спасибо!

                                                        0
                                                        Можно ещё быстрее, если объяснение сделать анимированной гифкой.
                                                        +7
                                                        Как нарисовать сову? Рисуете два овала… потом дорисовываете все остальное.
                                                        Вот тут так же :)
                                                          +2
                                                          нейронные мы сети изучали в универе, больше 10ти лет назад…

                                                          … создавали, обучали… чем лучше сеть обучена — тем более близкий результат к ожидаемому…

                                                          … да… гемор… но другое в бесноватость кидает: заведомо прописанные и известные алгоритмы, заведомо пройденные over n-тысяч циклов обучений созданной нейроной сети, и эту программу, которая якобы способна принимать приближенное к верному решению (в зависимости от входных данных) називают ИИ…

                                                          по моему глубочайшему убеждению, все ети ИИ и и т.п. — не более чем ход конем хорошо подкованных маркетологов…

                                                          сколько яблоко грушей не называй — суть вещей не измениться… но попыт синтетически создадут…

                                                          тема с моделированием нейронной сети увлекательна, но кучу времени бесстыдно сжирает =)
                                                            +2
                                                            В математическом смысле — нейронные сети (точнее модели) это аппроксимация неизвестной функции перехода из пространства данных в пространство решений с помощью комбинации тех или иных известных. А «интеллект» в этом случае — это а) способность иметь дело с данными, которые не встречались при тренировке б) дообучаться по ходу действия (для некоторых типов сетей)
                                                            +4
                                                            В начале статьи не хватает «Сап, Лурк!».
                                                            Но ладно, уговорили, пойду допишу резюме — впишу новые строчки между «квантовые вычисления» и «блокчейн».
                                                              +1
                                                              А город то какой? Ну, 128 Йорк Стрит, а город то? :)
                                                                +1
                                                                Здесь можно поиграть с обучением нейронной сети прямо в браузере.
                                                                  0
                                                                  Спасибо за ссылку!
                                                                  0
                                                                  Одна из самых полезных для меня статей на ГикТаймсе (Хабре). Огромное спасибо автору!
                                                                    0

                                                                    Спасибо! Думаю, на гиктаймс бы, конечно, лучше зашло, это правда.

                                                                      0
                                                                      Спасибо автору, теперь я точно займусь изучением нейросетей, а то в прошлый раз в требованиях к курсу был python и матан. Пока python изучал, желание посмотреть нейросети отпало
                                                                    +4
                                                                    Так, падажжи.
                                                                    У бинарных условий есть значения 0 и 1, так? 0 должен уменьшать вероятность наступления решений, а 1 — увеличивать, так?

                                                                    Водку некоторые не любят (зря конечно), но пускай она уменьшает шансы — у неё 0.

                                                                    На вечеринке есть друзья — это, наверное, хорошо? — тут 1.

                                                                    А почему у дождя тоже единица? Автор любит дождь, в нём можно спрятать слёзы?
                                                                    Почему дождь на улице увеличивает вероятнось пойти на вечеринку?
                                                                      +1
                                                                      В этом и есть прелесть нейронных сетей — в зависимости от того, кто и как обучает ее, результаты будут другими. Возможно, обучающий очень любит дождь или живёт в очень жаркой стране, где в дождь гулять очень приятно. Плюс, в итоге учитывается не простая бинарность отдельных вводов, но и их комбинации при добавлении новых слоев. Может, человеку вообще плевать, на то идёт дождь или нет, если будут друзья и не будет водки?
                                                                        0
                                                                        Хорошо, тогда какие-то связи должны давать минус к решению, так?
                                                                        Почему это нигде не написано? Почему только плюсы, а решение основывается на умножении бинарного условия на вес (водка — 0*0,2).
                                                                        А если бы водка была то ещё больше был бы смысл пойти?

                                                                        Разве где-то мы не должны учитывать на входе, что для одного человека бухло это хорошо, а другому синька чмо?
                                                                        Или про это очень важное на мой взгляд условие в статье просто ни слова? (перечитал — не нашел)
                                                                          0
                                                                          Пример в статье хоть и показателен, но далек от идеала. Именно такими рассуждениями, как ваши, научное сообщество пришло, например, к нормализации промежуточных весов :) в правильном направлении думаете, товарищ! Улучшать можно пример бесконечно, я постарался максимально его упростить. Все делается при помощи наложения сверху дополнительной математики.
                                                                            0
                                                                            Ваш пример не просто показателен и далек от идеала, с ним что-то не так. Или что-то не так с сетями в своей основе?
                                                                            В нем любой параметр может только увеличивать шансы принять решение, но не уменьшать.

                                                                            То есть есть два индивида:
                                                                            А) любит водку и пьяных друзей
                                                                            Б) не любит водку и пьяных друзей
                                                                            Исходя из условий задачи пить нам её придётся, ведь иначе зачем бы нам было обращать на неё внимание?

                                                                            Итак, условие «на вечеринке будет водка». В случае если она есть (1):
                                                                            А) получает баллы к решению пойти
                                                                            Б) не получает баллы к решению пойти, но не теряет их
                                                                            В обратном случае с водкой соответственно наоборот.

                                                                            Но в жизни обычно всё по другому: если ты не любишь пить, а друзья собираются бухать, то ты скорее всего не пойдёшь и сольёшься под предлогом.

                                                                            Это как если бы мы определяли огурец по правилам «длинный», «зеленый» и «в пупырышку». Мы точно знаем, что огурец должен быть в пупырышку, но этот не в пупырышку и мы просто не добавляем ему баллов, хотя должны бы списать. Так?

                                                                              +3

                                                                              Насколько я понял, если у нас есть негативные факторы, влияющие на решение, мы делаем на них отрицательные веса. Ура, баланс вселенной соблюден, вы великолепны)


                                                                              Для наглядности в самом первом примере условие с водкой пометим как "1" (т.е. влияет на решение) и повесим на нее -0.8 (если мы убежденные трезвенники, и не любим пьяных людей). Соответственно, в итоге получим -0.81+0.91+0.1*1 = 0.2. Значит, не идем на вечеринку, нам (читай, нашей нейросети) пьяные друзья не нравятся.

                                                                                0
                                                                                Ну и я и говорю — где-то должен быть минус, чтобы получился отрицательный вес.
                                                                                Но в статье про это ни слова.
                                                                                  0
                                                                                  В статье ни слова ещё про очень много концептов :) статья заведомо переупрощена, чтобы было интересно и быстро читать.
                                                                                    +2
                                                                                    Со всей очевидностью, минусовый вес должен быть у нейрона, получающего вход от дождя. То есть — «мало водки и сильный дождь — спасибо, я пивка дома хряпну» ;)
                                                                                      +1

                                                                                      Отрицательный вес не нужен, это просто вопрос начала отсчёта, и в статье есть упоминание нормализации и сравнение с 0.5.
                                                                                      Если вес связи n, то начало отсчёта считается за n/2. Тогда присутствие фичи увеличивает "шанс" на n/2, а отсутствие — уменьшает на ту же величину. При идеальных условиях матожидание нормализованной сети составит 0.5. Вуху.

                                                                                    0
                                                                                    У нас с вами, например, очень разные взгляды на жизнь. В жизни у меня так: я пить не люблю, но очень люблю находиться в пьющей компании :) вот на наших с вами данных нейронка будет диаметрально противоположные результаты выдавать.
                                                                            0
                                                                            А как быть с моментом обучения когда один видит синее платье а другой золотое?
                                                                            Как ведет себя сеть обученная на таком материале?
                                                                              0
                                                                              Зависит от того, как и кто ее обучал. Алсо, зависит от того, слышит она Лорен или Янни.
                                                                              –2
                                                                              Если дружите с английским почитайте лучше книжку neuralnetworksanddeeplearning.com
                                                                              На пальцах объясняется вся математика и работа нейронных сетей.
                                                                                +3

                                                                                Ох, книжки никто читать не будет для минимального понимания механизма работы. Те, кому нужно именно работать с нейронками, найдут тучу статей и книг. Те, кто просто хочет пальцы ног окунуть в тему и понять, что это не магия, а простая математика, смогут прочитать эту статью.


                                                                                Так что не "лучше", а просто для других целей.

                                                                                0
                                                                                Ох, книжки никто читать не будет для минимального понимания механизма работы.

                                                                                Не думайте так плохо о людях ;-)
                                                                                  +2

                                                                                  Я не думаю плохо :) скажем, я просто так не хочу читать учебник по анатомии, но знаю, с какой стороны у меня печень. Благодаря статье "анатомия за 5 минут" и подобным ресурсам :)

                                                                                  +1
                                                                                  Зашел в надежде понять нейронки за 5 минут. В итоге пролистал статью в ожидании когда же я все-таки не пойду на вечеринку :)
                                                                                    +1
                                                                                    Либо, например, вообще избавляется от красного цвета в картинке, так как он не важен (ищем, например, только зелено-синие платья)

                                                                                    Плохой пример, для поиска зеленых платьев нужен не только зеленый канал, а все, тк зеленый цвет это не только максимум на зеленом канале, но И минимум на остальных, поэтому для поиска зелено-синих нужен красный, иначе белые будут считаться зелено-синими тоже.
                                                                                      0
                                                                                      Точно, спасибо за уточнение!
                                                                                      +1
                                                                                      Хайп на нейронные сети не стихает и когда периодически кто-то из гуманитариев спрашивает, что это за такой невиданный зверь «нейронная сеть», то вроде бы и понимаешь, что там под капотом, но сложно объяснить простым языком.
                                                                                      Ещё полгода назад мне чтобы самому понять нейронные сети на уровне чуть выше чем в статье ушло пару дней на прочтение разных заумных статей, а здесь всё изложено за 5 минут и не грузят математикой.
                                                                                      Теперь если меня спросит кто-то из знакомых про нейронные сети, я просто скину ему ссылку на эту статью. Статья подходит не только гуманитариям но и разработчикам, которые ещё не знают нужно им это или нет. Большинство статей для новичков на самом деле написано математиками для математиков и начинаются с фразы «возьмём матрицу m на n» или «рассмотрим такую формулу», но не у каждого человека есть лишних пару дней на преодоление искусственно завышенного порога вхождения в область, которая тебе может и не интересна вовсе.
                                                                                        +1
                                                                                        Благодарю за комментарий! Именно с этой целью я и писал статью.
                                                                                          +3
                                                                                          +100500 вполне годная статья для быстрого понимания темы.
                                                                                          +3
                                                                                          адрес 128 York Street в каком городе?
                                                                                            0
                                                                                            Хотел сделать ИИ в простенькой игре, смотрю в сторону нейронок.
                                                                                            Я же правильно понимаю, что backprop для обучения с подкреплением вообще не подходит?
                                                                                              +1
                                                                                              Почему? Смотря, какая задача стоит.
                                                                                                0
                                                                                                Если я правильно понимаю backprop, нужно же знать численную величину ошибки относительно эталонно верного ответа?
                                                                                                Например, ИИ, управляющий танчиком, принял решение двигаться влево на 100 пикселей чтобы избежать попадания от выстрела противника. На 90м пикселе ловит снаряд.
                                                                                                Какова величина ошибки?
                                                                                                  0
                                                                                                  А, для такой задачи гораздо лучше подойдут классические алгоритмы :)
                                                                                                    0
                                                                                                    Какие, вы считаете, классические алгоритмы машинного обучения подойдут для данного случая?
                                                                                                      +2
                                                                                                      Насколько я понимаю, уважаемый backmeupplz имел в виду противопоставление классических алгоритмов алгоритмам машинного обучения.
                                                                                                      Обычно в играх используется алгоритм альфа-бета отсечения для эффективного продумывания на несколько ходов вперед, а через несколько ходов качество достигнутой ситуации на поле оценивается с помощью эвристик. Если есть какие-то более конкретные вопросы — задавайте.
                                                                                                        0
                                                                                                        Спасибо за указанные в комментариях алгоритмы, обязательно постараюсь разобраться. В сторону ML смотрю потому, что хочется делать максимально адаптирующихся к игре оппонентов ботов.
                                                                                                        Если допустим с танчиком ещё всё более-менее понятно, то там где нужно принимать решения, основываясь на цепочке событий — что-то я буксую.
                                                                                                        Например, взять покер.
                                                                                                        Краткое описание правил с вики
                                                                                                        • Два игрока, сидящие за сдающим (которого называют «баттон» или «дилер»), вносят ставки вслепую (блайнды). Обычно первый вносит половину минимальной ставки (малый блайнд), а второй — целую ставку (большой блайнд).
                                                                                                        • Каждый игрок получает по две карты в закрытую (префлоп), следует круг торговли.
                                                                                                        • На стол перед всеми игроками кладутся три карты в открытую (флоп), следует круг торговли.
                                                                                                        • На стол кладётся четвёртая карта в открытую (тёрн), следует круг торговли. При игре в лимитированный холдем фиксированная ставка в этот момент удваивается.
                                                                                                        • На стол кладётся пятая карта в открытую (ривер). Таким образом, на столе лежит 5 карт, следует последний круг торговли.
                                                                                                        • Игроки могут использовать свои (карманные) и общие карты со стола для составления 5-карточных комбинаций.


                                                                                                        • В процессе торговли игрок может делать следующие ставки:
                                                                                                        • Поставить, «бет» (англ. bet) — сделать ставку;
                                                                                                        • Поставить все деньги, «Ва-банк» (англ. all-in) — Сделать ставку на все деньги;
                                                                                                        • Ответить, «колл» (англ. call) — поставить столько же, сколько поставил соперник — уравнять;
                                                                                                        • Поднять, атаковать, задушить, «рэйз» (англ. raise) — увеличить ставку — поставить больше, чем соперники;
                                                                                                        • Поднять, атаковать, задушить, «рэйз» (англ. raise) — увеличить ставку — поставить больше, чем соперники;
                                                                                                        • Пасовать, сбросить карты, «фолд» (англ. fold) — отказаться от дальнейшего участия и сбросить карты;
                                                                                                        • Отметиться, «чек» (англ. check) — в ситуациях, когда ставки не были сделаны соперниками или ставка уже была сделана вслепую — не добавлять ставку, оставить «как есть».


                                                                                                        • Круг торговли заканчивается, когда все соперники сделали равные ставки или сбросили карты.
                                                                                                        • Сделанные ставки складываются в банк (англ. pot).
                                                                                                        • Если в процессе последнего круга торговли осталось больше одного игрока, то карты открываются и комбинации игроков сравниваются между собой. Если только один игрок остался в игре, то он забирает банк.
                                                                                                        • Если больше одного игрока победили в игре, банк делится поровну между всеми выигравшими (англ. split pot).

                                                                                                        Вроде бы всё просто. На выходе сетки одно из решений: поставить/ответить/поднять/оставить и сумма ставки/повышения, на входе параметров достаточно много но их все тоже можно перечислить. С величиной ошибки вроде тоже всё понятно — сумма выигрыша/проигрыша. А как делать backprop? Допустим: префлоп 1 круг торговли, флоп — 3 круга, тёрн 2 круга, ривер — 1 круг. В итоге для принятия решения мы к сетке обращались 7 раз. Как распространять?
                                                                                                        Ну или если я сильно многого хочу от отдной сети — делаем 4 и каждая принимает решение на своём этапе (префлоп/флоп/тёрн/ривер). Но на флопе три раза обращались к сетке — как распространять?
                                                                                                          0
                                                                                                          На выходе сетки одно из решений: поставить/ответить/поднять/оставить и сумма ставки/повышения, на входе параметров достаточно много но их все тоже можно перечислить. С величиной ошибки вроде тоже всё понятно — сумма выигрыша/проигрыша.
                                                                                                          Боюсь, здесь все немного сложнее. У конкретного хода нет величины выигрыша/проигрыша — если бы эта величина была, то ее производная по весам сети и искалась бы с помощью backprop и никаких проблем не было бы. А еще нейросети нужны соперники, чтобы играть.
                                                                                                          Если делать в лоб машинным обучением, я бы попробовал смотреть в сторону Q-learning. С другой стороны, можно проигнорировать всю психологию и смотреть на математическую вероятность выигрыша в случае получения конкретных карт. Можно еще попробовать сделать RNN (или набор отдельных сетей: по одной на каждый ход), заставить их играть друг с другом, а в качестве функционала качества использовать матожидание выигрыша после конкретного хода.
                                                                                                          PS: Я не специалист, я эти подходы сейчас за три минуты придумал, наверное, бывает что-то и получше.
                                                                                                            0
                                                                                                            проигнорировать всю психологию и смотреть на математическую вероятность выигрыша в случае получения конкретных карт
                                                                                                            О психологии речи вообще нет. А вычисление матожидания очень легко контрится: префлоп/флоп/тёрн — делаем небольшие ставки чтобы противник поддержал а на ривере делаем огромную — противник принимающий решение основанное на вычислении матожидания гарантированно скинет карты. В идеале, конечно, хочется чтобы бот сам научился такому поведению методами ML после серии игр с противником на вероятностях.
                                                                                                              0
                                                                                                              Тогда, как вариант, можно попробовать по ходам противников в прошлых играх прогнозировать их ходы в будущих раундах, и уже от этого оптимизировать матожидание. Вообще, думаю, стоит поискать научных статей на эту тему.
                                                                                                                0
                                                                                                                Ну не факт что есть история игр с противником, а тактику и в текущей игре можно два-три раза поменять
                                                                                                                  0
                                                                                                                  Если совершенно неизвестный вам противник первым ходом делает определенную ставку, то вы никак не можете определить, блефует ли он, для этого слишком мало данных. Нейронные сети чудеса творить не умеют.
                                                                                                    +1
                                                                                                    Смотря какую функцию мы оптимизируем. Если, например, время жизни, и хотим довести его до 100, то ошибка равна 10 (ну или какая-то функция от 10, в зависимости от метрики).
                                                                                                  +1
                                                                                                  Как правило в играх никаких ИИ не нужно, всё проще, элегантнее и эффективнее реализуется обычными алгоритмами.
                                                                                                    0
                                                                                                    Я не спец, но вроде как современные работы посвященные RL по большей части опираются на градиентные методы (например AlphaZero).
                                                                                                    Возможно стоит начать с поиска чего-то по теме policy gradient
                                                                                                    +1
                                                                                                    Большое спасибо за статью. Просто, быстро, на пальцах. Великолепно!
                                                                                                      0
                                                                                                      Отличная статья, спасибо. А backpropagation это механизм изменения весов связей или что-то другое?
                                                                                                        +1
                                                                                                        Алгоритм оптимизации, описанный в статье (рандомно перебираем варианты и берем из них лучший) называется методом Монте-Карло.
                                                                                                        Есть и более продвинутые алгоритмы, многие из них используют понятие градиента функции. Градиент — это направление, в котором нам нужно идти, чтобы функция максимально быстро возрастала. Например, представим себе график функции двух переменных как поверхность земли. Если положить на землю шарик, то он покатится вниз, в направлении, противоположном градиенту (в точности). Мы можем оптимизировать функцию подобным же способом: берем любую точку, считаем градиент (по формуле, выведенной ручками) и идем в противоположном направлении. Там снова считаем градиент и тд. Этот метод называется градиентным спуском.

                                                                                                        Backpropagation — это способ посчитать градиент функции ошибки нейросети, простой и эффективный.

                                                                                                        Если что-то непонятно — спрашивайте, постараюсь объяснить.
                                                                                                          +1
                                                                                                          Да. Если нейронка ошиблась — то из размера ошибки на выводе (например, если правильный вывод 1.5, а нейронка показала 0.9, то размер ошибки 1.5-0.9=0.6) он позволяет последовательно (справа налево) слегка изменить веса связей.

                                                                                                          То есть, скажем, были веса 0.1, 0.5, 0.3; ошибка — 0.6; алгоритм показывает, что нужно изменить первый вес на 0.1, второй на 0.2, третий на 0.3. В итоге у нас веса 0.2, 0.7, 0.6 — и нейронка выдает правильный результат. Backpropagation как раз один из способов подсчета, на сколько нужно двигать веса.
                                                                                                          +1
                                                                                                          Очень легко и понятно изложен материал.
                                                                                                          Спасибо большое автору за статью!
                                                                                                            0
                                                                                                            Извиняюсь, но это халтура. Индусы любят так «объяснять» и «систематизировать», типа умные.
                                                                                                            И еще у меня сильное подозрение, что ты сам не сможешь объяснить, зачем во втором твоем примере два слоя, если они по правилам матричного умножения сводятся к одному. А это самое главное ;-)
                                                                                                              +1
                                                                                                              Спасибо за метки, поднял настроение!
                                                                                                                +2
                                                                                                                Спасибо за такую простую и понятную статью!
                                                                                                                  +2
                                                                                                                  Объяснить концепцию простым языком – достойная задача! Многим проще сыпать остротами и напускать таинственности и «избранности».
                                                                                                                  Спасибо за статью.
                                                                                                                  Хорошая реализация метода обучения Фейнмана в действии.
                                                                                                                    0

                                                                                                                    Как-то у вас получилось введение в введение. Маловато для статьи, прямо как на известной картинке:


                                                                                                                    Количество времени для адаптации кода

                                                                                                                      0

                                                                                                                      Секундочку, но ведь автор ничего не сказал о коэффициентах смещений(bias), без них лезть в дополнительные скрытые слои не вижу смысла.

                                                                                                                        0
                                                                                                                        На суть это мало влияет. Можно добавить константный признак, всегда равный 1.
                                                                                                                          0

                                                                                                                          Согласен, но полное отсутствие этого признака на много что влияет.

                                                                                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                      Самое читаемое