«Толстый и тонкий» или как я осваивал нейросети

в 15:04, , рубрики: искусственный интеллект, нейросети

Часть 1

Введение

«Нейросеть» – понятие, известное достаточно давно. В начале двухтысячных, во время учёбы в ВУЗе, я столкнулся с этой любопытной штуковиной. Прочитав научно-популярную литературу по этой теме, я сделал вывод, что это, как минимум, «забавно» и у меня возникла симпатия. И, главным образом, потому, что нейросеть – это «младший брат» нашего человеческого разума.
До 2019 года эти штуковины представлялись мне не более чем просто забавными игрушками, но на фоне вновь возникшего огромного интереса к этой теме, я решил «приглядеться» к ним получше. Скажу сразу, тема распознавания образов никогда меня особо не занимала, да, есть набор «весёлых картинок», нужно что-то определить, или распознать буковки. — Ну и что?!

Нет, гораздо интереснее работать с текстовой информацией. Ведь машины всегда были не особо сильны в «гуманитарном направлении». С этой целью нагораживалась куча предикатов и даже возник целый язык и логика предикатов, но… Этот инструментарий оказался слишком слаб, чтобы реализовать мыслительные способности человеческого разума на другой «элементной базе».

image


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

Задача

Да, но вопрос, какую задачу брать, чтобы она не оказалась слишком сложной в качестве учебной?! Думал я думал и надумал(!) – индекс массы тела (ИМТ). А что?! – Формула известна, она достаточно простая и данных для обучения можно сформировать кучу. – Решено!
В качестве первой нейросети я решил взять перцептрон – искусственный нейрон, на входы которого подаются рост и вес, а на выходе мы получаем предсказанный нейросетью ИМТ.

image

В качестве среды для работы я решил выбрать MS Excel — в нём очень удобно создавать таблицы и работать с ними, а в качестве средства разработки – язык VBA. Первое, что нужно создать – вкладку инициализации нейросети – вкладку весовых коэффициентов, я назвал её «Нейросеть». На этой вкладке будут отображаться весовые коэффициенты, а так же, здесь они будут сохраняться в процессе обучения нейросети (НС).

image

Вторая вкладка – на которой будут храниться эталонные данные. Я назвал её «Обучение». Здесь же мы будем контролировать процесс обучения нашей НС.

image

Ну и третья вкладка – «Данные», здесь, собственно, будет происходить всё полезное действо.

image

Процедуры

Для работы с НС нам понадобятся следующие процедуры (они оформелены в виде макрокоманд со своими горячими клавишами запуска):

Ctrl + I (Initialise) – инициализация весов W1 и W2 НС случайными значениями;
Ctrl + R (pRepare) – подготовка эталонных данных;
Ctrl + T (Teach) – обучение НС;
Ctrl + E (Execute) – выполнение оценки ИМТ у набора данных.

Инициализация нейросети

Сначала проинициализируем наши весовые коэффициенты случайными значениями в диапазоне от 0 до 1 (не включительно). Это делает простенькая процедура на VBA.

image

Формирование эталонных значений

Поскольку точная формула вычисления ИМТ известна, переходим к формированию эталонных данных.

image

Данные будут формироваться на вкладки «Данные» (я задал 100 значений). Позднее мы выберем часть этих данных в качестве обучающей выборки и скопируем на вкладку «Обучение». За формирование данных отвечает процедура prepare(). Теперь можно переходить к вкладке «Обучение», но об этом во второй части статьи.

image

Конец первой части.

P.S. Я не стал писать длинную статью, дабы информации не было слишком много и фокус внимания читателя не рассеивался.

Автор: Coderanger

Источник

* - обязательные к заполнению поля