Всем привет! С вами Дядя Джек!
Тут такая тема назрела. Прежде, чем приступить к нейросетям, нужно нам про психологию людей поговорить.
Правда разговор будет чуть-чуть в стороне. Есть у меня на работе Ботаник один. Не тот, что основной участник историй на этом канале. А другой.
Назовем его Ботан-Молчун.
Ботаники в плане общения разные бывают. Бывают позитивные, но говорят всякое не по теме. Бывают молчаливые и не общительные. А бывают и агрессивные.
В данном случае Ботаник Молчаливый. Если чего и говорит, то отвечая на вопросы по работе. А вот про личное. Там вообще ничего не вытянуть обычно.
Но я тут его разговорил.
И... я не смогу передать дословно его рассказ. Я даже не смогу его передать от первого лица.
Я смогу только суть своими словами описать.
И прежде, чем это делать скажу, что родители бывают эмоционально не зрелые.
Это вообще у всех людей бывает. И более того, иногда мы в этом эмоционально не зрелом состоянии пребываем к концу вечера, особенно в пробке, когда бибику жмем стоя в километре от светофора.
Но бывает ситуация сложнее.
Например родитель, который по идее знает, что для развития ребенка, ему нужно посмотреть опеределенные детские фильмы. Ну чтобы ребенок и как собеседник адекватный был, и чтобы метафоры и шарады в поведении людей в кллективе понимал и поддерживал в правильном ракурсе.
Но вот телевизор в доме один. И родителю вот скучно смотреть эти детские фильмы. И вот ему бы сейчас чем-то другим заняться. Но нет. Он берет и включает видик с интересным ему фильмом, а ребенка вообще в другую комнату отправляет.
При том покупать видеокасету с этим детским фильмом он так же считает, что не стоит. Деньги для других целей нужны.
В итоге ребенок растет без необходимых социальных знаний.
Те же проблемы и в отношении к поведению ребенка. Родителю не интересны некоторые его формы, потому, что он считает их детскими. Да и сами вопросы, заданные ребенком дурацкими. И вместо ответов на вопросы эти, говорит, что ребенок дурак и должен сам подумать.
Называется такое поведение Эмоционально Не Зрелый Родитель. И подробно описано в книге Взрослые Дети Эмоционально Не Зрелых Родителей.
Т.е. там уже разговор про следующее поколение, когда оно выросло. И какие проблемы у него остались от таких папок и мамок.
Ну на этом я с введением приторможу.
***
Давайте про Нейросеть.
Сама идея Нейросети основана на том, что биологи, исследующие мозг человека обнаружили интересное поведение нейронных связей.
И вот именно эти связи в математической форме и представляет собой программа именуемая Нейросеть.
При этом в этой математической симуляции возникают интересные особенности процесса обучения, свойственные процессам обучения человека.
Об этом будет в этой статье, чуть позже.
Я постараюсь сжато изложить материал. Но эти психологические моменты подчеркну.
***
источник фото https://uookn-kursk.ru/teaching_material/kak-eto-rabotaet.html
В данный момент перед нами картинка на обложку, из серии пойди пойми как тут и чего.
На самом деле это структура "мышления", точнее распознавания изображения, многослойной нейросети с большим количеством разнообразных ответов. Т.е. когда она уже может и кота опознать, и кошку, причем по форме ушей и специфике расцветки на ней.
Т.е. это уже Нейросеть уровня, покруче человека будет. Человеку-то кота развернуть надо. А эта уже по ушам работает с точностью до 98 процентов.
Сейчас давайте подметим это важное число. 98 процентов точности.
Говорят это математический максимум для данного алгоритма работы. Хотите точнее - таки разверните кота.
А если 98 правильных результатов из 100 вас вполне устраивают, когда вы выбираете кота на Авито, причем с целью решить, ехать в живую смотреть или нет. То можете смело улыбаться сэкономленному времени.
Надо кстати наловчить нейросеть по фото определять девушек в настроении на познакомиться на улице. 98 процентов правильных ответов - да это ж мечта бабника!!! Мой текущий рейтинг - одна согласная из 10 подкатов. Это ж я 90 процентов ошибок совершаю.
А эта штука может 98 и при том правильных!!!
***
источник фото https://telegra.ph/Sliyanie-Fotografij-Nejrosetyu-Python-04-01
Но как говорится, та картинка была так себе. Она была типичный Науч-Поп.
Когда все красиво и сразу понятно. Но при этом в упор не ясно, как это запрограммировать.
Вот тут у нас сейчас все повеселее.
Смотрите на самую нижнюю картинку.
Есть слой входящих данных. Есть промежуточный, именуемый скрытый, слой, и есть слой ответа.
При этом давайте мысленно доведем количество ответов не до 2х, а до 10.
Теперь давайте сделаем следующую мысль.
Рукописные числа называется.
Вот когда по отдельности каждая цифорка. Давайте представим, что ее фото - это 10 на 10 пикселей. Принтеры матричные и вовсе их в 8 точек делали.
Но мы сейчас возьмем наиболее круглые цифры для лучшей работы нашего мозга. Любит он когда дело круглое.
Итак. Наши 10 на 10, это 100 точек. При этом это рукописная цифра. Т.е. сила нажима на ручку меняет яркость линии. Давайте тоже допустим, что там 10 оттенков.
Итак. У нас есть 100 точек со значениями от 0 до 9. Ну как в компах положено. С нуля считаем.
Т.е. вот он наш первый слой. 100 входящих точек.
***
А на выходе там нужно, чтобы наша простенькая учебная нейросеть, распознала 10 цифр. Т.е. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Т.е. выходной слой - это 10 точек. Каждая соответсвюящая своей цифре.
При этом в этой точке будет самое большое значение. Т.е. в других какой-то хатоический числовой шум может иметь место быть.
Он даже в некоторых случаях, например в случае тройки и восьмерки может выдавать например на 8й точке число 6, а на 3й точке число 3, в то время как другие точки выше 1.5 не дошли.
Т.е. этакое сомнение Нейросети в точности своей работы.
Мы можем его даже отдельно использовать как аналитический сигнал, что нам нужно усилить обучение именно этой цифры дополнительными примерами.
***
При этом скрытый слой может быть как меньше 10 точек, так и больше.
По сути наш скрытый слой, это и есть слой обучения.
Именно обучения Нейросети. Мыслит-то она во все 3 слоя.
А вот обучается в этот скрытый слой.
***
Вы по стрелочкам уже заметили, что нейросеть произоводит некоторую связь каждой входной точки слоя со всеми точками слоя.
Это реально так. Они суммируются.
Другой вопрос, что коффициент связи у каждой точки с каждой точкой разный.
Т.е. В=А+(Б*Х-Связи для точки Б)
И сейчас самое важное.
Алгоритмов этой связи математиками придумано 64 штуки. А может и больше.
Все зависит от того, что у вас на входе, что нужно расчитать, и что вывести.
Т.е. для распознавания отдельных фото-изображений один алгоритм. Мы сегодня о нем поговорим. Для звука другой. Для видео потока третий. Для аналитики на Уолл Стрит - ну там отдельный движ на 100500 алгоритмов. Для написания осмысленных текстов - пятый. Для автопилотного дела - шестой. Для Скайнет, Матрицы, WiKi, и той сети, что в фильме Подарок 2008го года - еще один.
Сегодня у нас на разборе распознавание простых чисел, и в один слой.
А по факту слоев тоже может быть несколько.
Причем конфигурация их порой не предсказуемая.
источник фото https://telegra.ph/Python-Nejroset-Obrabotka-Massivov-Fotografij-03-26
***
Итак. Фотки рукописных цифр.
На них проще всего понять, как учится Нейросеть. И как вообще работает.
Со 100 точек первого слоя, у нас происходит некоторая сглаживающая сумма.
Алгоритм сглаживания, для данной задачи называется Сигмоида.
И если честно я его еще сам во всех подробностях не разобрал. Но суть там в том, что с каждой более низкой точкой связь слабее, но не линейно слабее, а по Сигмоидальной кривой.
Эти сглаженные данные приходят в скрытый слой. Который давайте для начала тоже возьмем на 100 точек.
После чего происходит второе сглаживающее суммирование - но уже до 10 точек на выходе.
***
А теперь Внимание!!!! Сейчас будет алгоритм обучения.
Изначально мы выбрали Симоидальную кривую из справочника. Вот как есть. Взяли и распределили.
Но если мы сейчас в Нейросеть загрузим картинку числа 3 например. То она может нам и 8 выдать, и 7. Или 6.
Это будет ошибка. Мы ведь ее обучаем. А значит знаем, что дали ей тройку. И ожидаем ответ 3.
А у нее там безобразие.
Но мы в этот момент вычисляем ошибку. Т.е. разность между правильными и тем, что на дала.
И загоняем назад. Для обучения тоже есть разные алгоритмы. Но суть в том, что мы сейчас снова по Сигмоидальной кривой вводим коррекцию распределения связей между точками.
Причем в первую очередь между первым слоем и вторым. Скрытым.
Тут у нас есть правда один нюанс. Называется Коэффициент обучения.
***
И тут психология людей. Этот коэффециент - это когда родитель мирным тоном уговаривает повторить обучение. Заново пройти пример. Или когда чуть что сразу подзатыльник.
Т.е. когда эмоционально не зрелый. Первая же ошибка. Получай леща.
Так вот тот коэффциент обучения он от нуля и до 1. Обычно выбирают для начала обучения 0.3.
При этом Нейросеть будет плавно приближаться к правильным ответам.
Если же выбрать коэффциент побольше. То обучаться она может быстрее. На меньшем количестве примеров.
Но может невзначай проскочить паравильное значение. И научиться его хронически проскакивать. Т.е. не научиться его находить в принципе.
Это актуально например при обучении игре на гитаре. Если начать сразу с Цоя, то потом на гаммы вернуться и правильно руки поставить может уже не получиться. И гитариста Виртуоза уже не получится.
Этот момент называется насыщением обучения.
Он может быть как по вине слишком выского коэффциента обучения, так и по причине не правильной подборки учебных примеров.
Т.е. если папа вместо того, чтобы правильно и поэтапно показать, как палочки для суши держать, просто показывает на своей руке еще и дергая ее вверх вниз. Мол вот смотри на вот это мельтешение и его повторяй.
Меня так однажды девушка учила эти палочки держать. Пришлось потом дома взять ластик и фломастеры. И самому найти нужное положение и нужную кинетику движений.
Т.е. Психология, что человеческой, что цифровой Нейросети ведет себя одинаково. Если леща давать при ошибках, то учиться не будет. Если примеры показывать не правильные, недостаточно подробные - то тоже учебу может бросить так и не дойдя до нужного результата.
Но можно выбрать и такой коэффициент обучения - когда обучение будет идти слишком долго.
***
Теперь давайте снова про связи межу точками.
Суть в том, что мы коэффициенты при каждом учебном процессе корректируем. Показываем разные учебные примеры. И вот тут важно сказать, что в файлик не зыбваем эти учебные значения сохранять.
Т.е. эти коэффциенты связей.
У меня в учебнике в этом плане подвох. Обучение есть. Да переменные только в ОЗУ. Вывода их в файл не запрограммировано.
А ведь нам нужен этот файл. И даже разные версии его, при разных алгоритмах обучения или... Эпохах Обучения.
Это особый термин.
Суть его в том, что примеров учебных. Разных почерков у вас как бы не 100500.
Смысл вообще собирать все вариации почерков? Толку от такой нейросети, если сначала нужно со всех отпечатки собрать?
Она должна научиться на значительно меньшем количестве примеров. В идеале так и вовсе на одном шрифте из книжки.
В моем учебнике все таки такого идеала не было.
Был вариант загрузить файл с сайта учебника, в котором по 10 000 образцов написания каждой цифры.
Но суть не в этом.
Суть в том, что после первого прохода по этим цифрам Нейросеть стала давать точность ответа 65 процентов.
И если девушек распознавать - не плохая помощь начинающим. То вот с их номерами телефонов - уже как-то грустно. А если речь о переводе миллиона рублей мне на счет, так и вовсе ситуация класса беспредел.
***
Но есть тут интересный момент.
Если второй раз прогнать эти же учебные примеры.... Точность возрастает.
И если прогнать 10 раз - то она уже будет 95 процентов.
И это будет первая эпоха обучения.
Следующие 10 раз - вторая эпоха.
Еще 10 раз - третья.
Так вот максимальная точность в 97 процентов достигается на 7й эпохе обучения Нейросети... при 100 точках скрытого(учебного) слоя.
При этом на эту точность так же влияет количество точек скрытого слоя. Вариация их приводит к улучшению и обучения. Точность может быть уже на 5й эпохе достигнута. Так и наоборот. Если слишком сильно уменьшить... Ну там сами понимаете. Одно дело мозг человека, а другое амебы. Точность распознавания цифр явно разная. Одному это номер телефона красивой девушки, а другой даром не надо.
Но сами понимаете, чем больше точек на втором слое - тем дольше трудиться.
Сегодня комп Кор Ай 5 отрабатывает 7 эпох обучения на 100 точек второго слоя за 3 часа.
***
Тут тоже тема. Человеку нужно в сделать 300 примеров, чтобы качественно работать начать. А тут 10 тыщ. Но при этом человек эти 300 примеров неделю делать будет. А она за 3 часа управляется.
Вот где парадоксы. Учить ее нужно больше, но делать она это будет быстрее. Правда вопрос генерации учебных примеров остается открыт. Учебник для человека похоже проще написать, чем для Нейросети учебные картинки подготовить.
***
Но есть еще один момент.
Что если эпохи продолжить?
Оказывается, что точность будет падать. И к 10й эпохе упадет до 94х процентов.
Вам это человека не напоминает? Вот он машину в первый год учится водить. Вот научился. Хорошо водит.
А вот это дело на автоматизм перешло, и качество вождения снизилось.
А ведь и в других делах так же.
Вышел на автомат - а качество хуже стало.
А суть в том, что у Компьтерной Нейросети обучение можно остановить. А вот у человека нет. Человечекая Нейросеть постоянно учится.
Подстраивается например под новую форму бицепса или мышц двигающих мизинцем при слепом методе печати.
Мышцы от объемов работы растут. Нейросеть корректрруется. Но вот только в какой-то момент Эпохи Коррекции нарастают и качество снижается.
Оказывается это и в математике нейронных связей просчитывается.
Вообще есть такая наука о человеческом мозге как Нейроэкономика. Я про нее мельком слышал. Но там как раз про изменения поведения.
А вот тут у нас в математике это дело расчитывается.
Так сказать можно вывести даже экономику кризисов нейронных связей. Как в Нейросети компа, так и в голове человека.
***
Вот такие дела.
У меня на сегодня все.
Буду продолжать более подробно на эту тему на канале писать.
Скажу сейчас только то, что учебник у меня Тарик Рашид Создаем Нейронную Сеть.
Он на Пайтоне. И я раньше с этим языком дела не имел. И надо сказать, из этого учебника языка не понял. Я уже взял в руки другой учебник на эту тему. Мы в эпохе интернета. У меня 30 секунд заняло появление учебника по Пайтону в смартфоне.
Я проштудирую его в ближайшее время, и тогда будет разбор уже с примерами кодинга.
И описанием математических процессов.
Так же у меня есть учебник по алгоритмам нейросетей на 1100 страниц. Автор Саймон Хайкин Нейронные Сети Полный Курс. В сегодняшней статье присутствуют некоторые данные основанные на прочитанном мною содержании этого учебника. Его там страниц на 10 текста.
Ну а сейчас все.
Спасибо, что вы со мной!!!
***