Часть 1
Введение
«Нейросеть» – понятие, известное достаточно давно. В начале двухтысячных, во время учёбы в ВУЗе, я столкнулся с этой любопытной штуковиной. Прочитав научно-популярную литературу по этой теме, я сделал вывод, что это, как минимум, «забавно» и у меня возникла симпатия. И, главным образом, потому, что нейросеть – это «младший брат» нашего человеческого разума.
До 2019 года эти штуковины представлялись мне не более чем просто забавными игрушками, но на фоне вновь возникшего огромного интереса к этой теме, я решил «приглядеться» к ним получше. Скажу сразу, тема распознавания образов никогда меня особо не занимала, да, есть набор «весёлых картинок», нужно что-то определить, или распознать буковки. — Ну и что?!
Нет, гораздо интереснее работать с текстовой информацией. Ведь машины всегда были не особо сильны в «гуманитарном направлении». С этой целью нагораживалась куча предикатов и даже возник целый язык и логика предикатов, но… Этот инструментарий оказался слишком слаб, чтобы реализовать мыслительные способности человеческого разума на другой «элементной базе».
Вдохновлённый тем, что нейросети научили уже классифицировать информацию, а не только распознавать изображения, я решил прикоснуться к этой диковинной штуковине вновь.
Скажу сразу, те, кто пишет, что нейросети – это «легко», слишком упрощают проблему. А те, кто пишет, что «сложно» — сгущают краски. Но, обо всём по порядку. Простого чтения каких-то околонаучных источников, расписывающих их прелести, я считаю, недостаточно, поэтому я решил изучать эту «науку» на примере какой-то конкретной задачи.
Задача
Да, но вопрос, какую задачу брать, чтобы она не оказалась слишком сложной в качестве учебной?! Думал я думал и надумал(!) – индекс массы тела (ИМТ). А что?! – Формула известна, она достаточно простая и данных для обучения можно сформировать кучу. – Решено!
В качестве первой нейросети я решил взять перцептрон – искусственный нейрон, на входы которого подаются рост и вес, а на выходе мы получаем предсказанный нейросетью ИМТ.
В качестве среды для работы я решил выбрать MS Excel — в нём очень удобно создавать таблицы и работать с ними, а в качестве средства разработки – язык VBA. Первое, что нужно создать – вкладку инициализации нейросети – вкладку весовых коэффициентов, я назвал её «Нейросеть». На этой вкладке будут отображаться весовые коэффициенты, а так же, здесь они будут сохраняться в процессе обучения нейросети (НС).
Вторая вкладка – на которой будут храниться эталонные данные. Я назвал её «Обучение». Здесь же мы будем контролировать процесс обучения нашей НС.
Ну и третья вкладка – «Данные», здесь, собственно, будет происходить всё полезное действо.
Процедуры
Для работы с НС нам понадобятся следующие процедуры (они оформелены в виде макрокоманд со своими горячими клавишами запуска):
Ctrl + I (Initialise) – инициализация весов W1 и W2 НС случайными значениями;
Ctrl + R (pRepare) – подготовка эталонных данных;
Ctrl + T (Teach) – обучение НС;
Ctrl + E (Execute) – выполнение оценки ИМТ у набора данных.
Инициализация нейросети
Сначала проинициализируем наши весовые коэффициенты случайными значениями в диапазоне от 0 до 1 (не включительно). Это делает простенькая процедура на VBA.
Формирование эталонных значений
Поскольку точная формула вычисления ИМТ известна, переходим к формированию эталонных данных.
Данные будут формироваться на вкладки «Данные» (я задал 100 значений). Позднее мы выберем часть этих данных в качестве обучающей выборки и скопируем на вкладку «Обучение». За формирование данных отвечает процедура prepare(). Теперь можно переходить к вкладке «Обучение», но об этом во второй части статьи.
Конец первой части.
P.S. Я не стал писать длинную статью, дабы информации не было слишком много и фокус внимания читателя не рассеивался.
Автор: Coderanger