Конструирование искусственных нейронных сетей с использованием Tensorflow и GoogleColab на Python

Конструирование искусственных нейронных сетей с использованием Tensorflow и GoogleColab на Python

0:01
добрый день уважаемые зрители канала в новом 2021 году решил записать первое
0:06
видео и видео тоже будет на достаточно актуальную новую тему формате моего
0:13
канала это тема искусственных нейронных сетей и построения моделей машинного
0:19
обучения на основе искусственных нейронных сетей в сети интернет достаточно много материалов которые
0:27
касаются искусственных нейронных сетей до их целом много теории по их
0:34
построению ну и собственно много примеров кода написание искусственных
0:39
нейронных сетей но хотелось бы в первую очередь заметить то что любой код он полезен
0:46
тогда когда действительно на основе его можно решать какие-то задачи и в
0:51
принципе для того чтобы научиться решать реальные задачи на примере искусственных
0:59
нейронных сетей нужно сначала изучить суть их работы но и для того чтобы можно было это
1:04
звучит достаточно просто необходимо конечно же какие-то для начала
1:09
абстрактные примеры которые показывают суть работы нейронных сетей и наиболее
1:16
удачным вообще фреймворком для построения искусственных нейронных сетей то есть набор библиотек
1:22
является библиотека tensorflow фреймворк ты тендер flow который
1:29
позволяет реализовать подход построение искусных нейронных сетей собственный ну
1:36
и собственно эта библиотека написана на языке питон поэтому логичнее было бы
1:41
всего это показать вам опять же на примере данных языка программирования ну
1:47
и конечно же это библиотека встраиваемая ее можно использовать и на других языках
1:53
программирования том же самом язык программирования р-р собственно здесь
1:59
можно также реализовать данный подход но прежде чем мы с вами перейдем к
2:04
рассмотрению реального примера и построениями просите на примере фреймворка tensorflow
2:09
я думаю что логичнее было бы рассмотреть в качестве иллюстративного пример вот
2:17
такой вот пример песочнице до playground тендер flow точка орг все ссылки я на
2:25
этот ресурс оставлю в описании и здесь если вы перейдёте по данной ссылке вы
2:30
увидите один из примеров построений искусной нейронной сети как ее строй
2:37
известно опять же что любые нейросетевые модели имеют несколько
2:43
слоев и они аналогичны биологическим системы например нервной системе коре
2:51
головного мозга человека да где тоже есть слои нейронов которые между собой связаны причем каждый нейрон имеет свою
2:58
функцию активации если вы перевода сделаете можете видеть что есть
3:05
возможность выбора функции активации причем эта функция активации может быть иметь различные варианты может быть и
3:12
линейное и 7 1 и до функция активации это у нас различный набор данных которые
3:19
мы предполагаем обрабатывайте решать задачи соответственно классификации или
3:25
регрессии на дне на кроме того здесь есть варианты самих классификаторов которые могут
3:32
выполнять различные операции над входным набором данных входной набор данных
3:39
различному давайте вот возьмем самый простой у нас две группы точек который
3:44
нам нужно классифицировать ну и возьмем например здесь видите можно
3:49
настраивать различные количество входных и выходных слоев в нейронной сети ну
3:56
давайте возьмем мне . входных и выходных но и скрытых лечить скройте как росла и
4:03
входной и выходной десяток раз у нас указ давайте возьмем на примере одного-единственного нейрона выходном
4:12
слое потому что есть нас пример показан свёрточная нейронная сеть и когда мы пытаемся описать много признан
4:20
к входных данных с помощью одного из так скажем функции классификации ну и далее
4:26
видим результаты работы нажимов нажав кнопку здесь вот плейдо мы видим что
4:32
нашу модель начинает обучаться но на самом деле в данном случае она разделяет достаточно хорошо мы видим здесь у нас
4:40
на данном наборе данных задачу классификации работает достаточно точно да
4:47
отрабатывает он точнее задача классификации ну и мы видим что здесь у нас ошибка или функция потерь сходится да на
4:55
одной тысячной это хорошие хорошие
5:00
результаты однако если мы сменим набор данных например вот такое то в данном случае уже наши нейросеть не сможет
5:07
ничего сделать с этим набором данных она не умеет правильно это все классифицировать мы видим что наши
5:13
функции здесь не справляется и ну и здесь уже 0 5 до 50 процентах случаев только нашу модель работает правильно
5:21
что конечно же не удовлетворяет потребности наша задача можем добавить 2
5:26
2 входных nero надо попытаться с помощью них как мы видим лучше не стал можем
5:33
добавить и 34 и вот когда может добавляем больше 1
5:40
более высоком уровне точности наименьшем уровне соответственно party
5:46
что это значит это значит то что вот наши элементарная нейронная сеть без скрытых
5:53
слоев за некоторые ограниченное количество эпох с определенным шагом обучения 10
5:59
есть learning рэй тот самый темп обучения который позволяет использовать
6:06
подход градиентная для собственно обучения этой нейросети для того чтобы
6:13
можно было эффективным подходом с эффективным точнее сошел коридоре
6:18
эффективности справиться с поставленной задачей как мы видим сейчас наши не раз сеть задачей справляется и точность
6:26
высокой нового 10 видим количество эпох которые прошло достаточно большое понятно что данная модель может еще и
6:32
быстрее обучиться из себя давай считающего классификатор видим здесь она буквально сразу на за некоторые вот
6:41
видите сейчас прошло условно говоря 200 пока обучения – нашу
6:46
модель уже прекрасным образом работы конечно мы можем добавить и скрытый слой и 1 и 2 и 3 как мы меня здесь у нас
6:53
добавляются различные функции которые позволяют
7:00
реагировать сигналы входного слове и обрабатывать их перекрестный
7:06
соответственно здесь еще быстрее можно за 50 только стоит в понятно можно здесь
7:15
точность увеличить точнее темп обучения увеличь если мы сделаем обучение 10 в
7:21
нашу модель попросту переобучаться очень быстро эффект при обучении здесь имеет
7:26
место быть но если мы сделаем слишком медленным темпом учения то здесь соответственно наша модель будет
7:32
обучаться очень-очень что тоже для нас неприемлемы понятно можно сделать и
7:44
другой набор пытаться данную модель обучить самый сложно здесь это вот этот
7:52
набор данных который которые с высокой сложностью поддается классификации и вот
7:59
сейчас нейросеть хоть и пытается что то сделать но мы ее не удается и так что
8:06
это за пример такой на этом примере вы можете посмотреть на различных наборов как работает различные структуры
8:12
нейросетей понятно что есть даже если в этом случае мы добавим много много скрытых слоев
8:18
ну например 6 здесь максимальное количество 6 слоев то даже в этом случае
8:23
наша задача не будет решена за приемлемое время до нас сейчас не россия
8:30
пытается обучаться медленно но все-таки функции потерь у нас снижается что на
8:38
тестовой выборке что на обучающей выборке и мы видим медленно медленно начинает наша сеть разделять эти да на 2 класс
8:49
но здесь конечно придется ждать был понятно можно здесь варьировать чем количеством слоев
8:54
здесь можно варьировать также функции активации например здесь она у нас
8:59
тангенциальная а можно пример поставить есть ну например 7 как мы видим здесь у
9:06
нас особо в этом случае лучше не стал но этот самый сложный набор который по сути
9:14
представляет собой вот такими перепутанных данной сложным образом между собой соотносящиеся сами понимаете
9:21
что такой набор разделить автоматически очень очень сложно если мы возьмем более простой набор конечно же наша модель в
9:28
этом случае от работает лучше но и дело в том что и в этом случае у нас видите большое количество слоев не идет на
9:35
пользу нашей нейросети потому как она начинает долго долго учить что также что
9:45
также может быть не может очень эффективно решить поставленную задачу
9:51
например в этом случае оно обучается и так конструирование нейросети это
9:56
искусство более того мы видим какие функции входные до дают нам наибольший прирост производительности в этом случае
10:04
то есть на данном примере можно попытаться понимаешь структуру данных
10:10
собственно смоделировать структуру нейронной сети то есть сколько слоев не должно быть и какие функции активации
10:17
можно здесь попробовать будущего это но мы понятно здесь сосредоточиться на задаче который вам необходим и так что
10:25
мы с вами будем теперь делать для того чтобы вы могли здесь вот конструировать
10:33
различные модели я вам ссылку оставляю на данный инструмент ну а мы с вами будем конечно же решать задачи более
10:40
приближены к реальности не абстрактные задачи которые касаются регрессии и
10:45
касается прогнозирования социально-экономических показать итак перед нами сейчас инструмент который
10:52
называется google колот ну и собственно к лаборатории молочных
11:00
соответственно ресурса google которая позволяет нам выполнять код на языке
11:06
питон ну и собственно подключать также различные библиотеки здесь у нас открыт
11:12
аналог jupiter ноутбука да то есть по сути блокнот который позволяет здесь же
11:19
по блокам выполнять некоторые куски кода ну и далее смотреть сразу же здесь
11:25
результаты сейчас мы с вами этот код разберем разумеется пример этого блокнота я вам оставлю в описании под
11:31
видео на точнее ссылку для блокнот который можете запустить но и собственно на его примере
11:40
различные настройки нейросетевые решить задачу играть и так но для начала
11:47
давайте рассмотрим как это все работает значит первый блок у нас позволяет подключить библиотеки
11:53
стандартной библиотеки которые работают с матрицами для визуализации собственно
12:01
для различных других нужд но и самое главное вы здесь подключаем ту самую библиотеку цензор шло во первых здесь
12:11
можно посмотреть версии под ключ ну и собственно и подключение которые
12:21
нам необходимо если понадобится здесь данный код и мы видим что эти
12:27
библиотеки у нас подключены здесь у нас подключение все вычисления выполняются
12:34
соответственно через у нас серверный
12:45
ускоритель позволяет нам рисовать данные
12:52
возможности мы видим версия здесь у нас отображается теперь мы должны с вами
12:57
загрузить данные во первых здесь у нас есть такая вот подпапка который
13:06
позволяет загружать эти файлики в принципе можно сказать так что эти
13:14
данные которым мы отсюда запираем могут здесь размещаться если мы всегда
13:20
загружаем вручную могут размещаться здесь временно то есть только на время запуска нашего ноутбука у меня здесь вот
13:27
в этом файлики лежат показатели по импорту и экспорту российской федерации начиная с 2010 года
13:35
каждый месяц ну и соответственно здесь параллельно записанными только показателей в тысячах долларов да здесь
13:44
записано также курс национальной валюты курс нефти на мировом рынке в долларах соответственно здесь мы с вами сейчас
13:51
будем пытаться создавать создавать модель которая будет нам прекращено модель который будет нам выдавать
13:57
прогноз одного из эти показатели ну например экспорта до зависимости от показателя
14:03
импорта курса рубля и стоимости нефти на мировом рынке но для этого нам конечно
14:09
же нужно считаете данные загрузить для того чтобы эти данные загрузить я сюда
14:15
просто закидываю данных файлик да но вне как упреждает что файлы будут удалены при перезагрузке
14:22
этой среды выполнения на самом деле можно здесь подключить и базу данных
14:28
можно здесь не через google drive но в нашем случае для данного примера я не
14:35
буду тратить время на объяснение того как подключить сюда эти данные по просто мы всегда забрасываем ну и смотрим какой
14:45
то директории соответственно как мы
14:50
видим она у нас аналогично и потому что я до этого дело ну и вот это вот строка позволяет нам
14:56
считать данные матрицу точнее в таблицу дата да ну и также показать ее окончании
15:04
этой таблице и иди сюда . здесь указана 5 последних строк что мы с вами выполнили мы должны
15:11
мы видим что в нашем наборе данных присутствует данные до начал 2020 года
15:19
больше также мы можем здесь изменить наш
15:25
набор данных например если мы хотим исключить один из столбцов например столбец даты из рассмотрения
15:31
линейно нарастает например мы хотим далее отображать и работать только с
15:38
последующим четырьмя столбцами что собственные делаем указываем дали ни
15:43
одного столбца и записываем все это в новый таблиц который мы посмотрим как
15:51
теперь это выглядит . сначала ну собственно вот начало так
15:57
будет выглядеть этой таблице это у нас 4 соответственно столбца
16:04
что дальше как мы видим у нас столбцы очень сильно отличаются друг от друга здесь у нас порядок чисел до миллионы
16:13
здесь порядок чисел десятки предлагаю это решить каким образом чтобы можно
16:18
было потом удобно сравнивать эти числа предлагаю их про логарифмировать собственно следующий блок как раз и
16:23
позволяет нам выполнить логарифмирование нашего наших значения нашего data set a показать также его
16:32
преобразованном виде что мы с вами не делать теперь мы видим
16:37
что у нас числа имеют ну примерно один и тот же порядок и и собственно далее у
16:45
нас идет по сути исследователь ность исследование данных здесь можно посмотреть и собственно директорию где
16:55
данные лежат здесь можно посмотреть и описание этих данных если там
17:01
пропущенные значения и вообще какие соответственно у нас типы данных
17:07
присутствовать в нашем наборе все это как мы видим здесь описывается в нашем же ноутбуки я на этом сейчас
17:14
останавливаться не будь самое интересное что нам необходим нам него мы с вами создать обучающую выборку то
17:21
есть нас ту на основе которой наша модель будет обучаться а также на основе которой она будет собственно проверяться
17:28
то есть тестовый выборку как мы видим здесь у нас так и сделал причем процентное соотношение 80 на 20 то есть
17:35
мощность процентов обучающей выборке 20 процентов тесты в браке опять же это
17:40
такой вот устоявшиеся соотношение который конечно же можно менять потом дай попробовать посмотреть что будет ну
17:47
и это уже как вы понимаете задачи исследовательской мой выполнив данный
17:55
собственно пример мы с вами видим что между собой вот эти вот 4 компонент
18:03
соотносится вот так линейно между собой зависит только показатель импорт и экспорт
18:09
стране остальное все вот как мы можем наблюдать вот в таком режиме с каким-то
18:15
разрывами непонятными теми же самыми функциями
18:21
плотности вероятности поэтому здесь должно быть дополнительно исследовать нужно будет конструировать нашу модель
18:29
прогностически нам нужно будет обязательно выбирать различные функции активации нейронов то есть те функции
18:36
которые позволяют правильно нейронам откликаться на входное возмущающие воздействие
18:44
сейчас до данного момента выполнять вы видите что результаты у нас следующую
18:51
ну и как мы понимаем в многомерном пространстве данные структуру наших
18:58
данных будет иметь сложный характер который также если в качестве основного
19:03
показателя который мы будем с вами сейчас исследовать это будет показатель экспорт можно нажать например контроль 9
19:12
для того чтобы выполнить весь код который у нас сейчас имеется мы сейчас
19:18
будем наблюдать только выполнение кода от данного момента значит здесь у нас в
19:25
качестве писателя статистика указаны количество до средняя стандартный плане
19:31
мальной максимальную другие статистические характеристики каждого из имеющихся предикторов в нашем случае
19:38
результирующий перемены будут показатели экспорта факторными признаками будет импорт показатель
19:44
рубля по отношению к доллару . курс рубля по отношению к доллару и стоимость нефти также в долларах ну и далее мы с
19:52
вами указываем что нам необходимо сделать метку что в качестве вот того
20:00
самого той самой переменной котором буду прогнозировать
20:06
за это будет нас показатель точнее прошу прощения экспорт-импорт курс рубля и
20:13
нефть соответственно нас это фактор
20:18
далее мы здесь выполняем нормализацию этих данных для того чтобы те входные
20:27
сигналы которые будут поступать на нашу нейронную сеть лежали в пределах от нуля
20:32
до единицы ну точнее даже здесь получается даже
20:40
меньше потому что смотрите здесь у нас когда мы выполняем вот в таком вот виде до нормализацию данных они там конечно
20:47
могут входить и не за пределы 0 единиц дело в том что здесь у нас видите как выполняется нормализации как разность
20:54
значений а и среднего значения соответственно стандартное отклонение
21:01
то здесь будет у нас исследоваться вариативность данных признак ну вот этот
21:07
нормализованный набор данных мы можем наблюдать в частности нормализованный набор тех самых предикторов далее вот
21:18
здесь вот самый как раз начинается интересный но можем конструировать нашу не россии но здесь я уже делал много
21:23
слоев и здесь по сути то настраивается различное количество слоев и нейронов в
21:30
частности здесь смотрите выбираете количество нейронов скрытом слоем дальше
21:37
указывается функция активации ну и далее
21:42
здесь также указывается темпа буча к нашей модели также вычисляются
21:48
основные характеристики точности различные ошибки абсолютно ошибка средняя ошибка вот здесь как раз и
21:55
реализуется в этом блоке ну а далее мы видим что собой представляет нашу
22:00
нейросеть сколько в ней параметров которые будут обучаться ну и дальше
22:10
здесь мы также можем видеть результаты
22:15
обучения для определенного набора здесь можно разное количество точек сказать
22:22
здесь меня было указано 300 можно и меньше можно и больше здесь это
22:28
непринципиально просто можно наблюдать как изменяется тот самый результат
22:36
дальше остается только вывести прогресс обучение виде точек после каждой
22:43
завершенные эпохи к слову говоря здесь количество эпох я указал 500 сразу с
22:49
запасом чтобы посмотреть успеваете нашу модель вообще мучиться и как изменяется
22:55
точность соответственно предсказать нашем случае здесь мы с вами можем
23:01
наблюдать конструировать и собственно
23:07
обучиться значит 500 у нас идет обучение ну а дальше визуализируются результаты есть можно
23:14
менять границы как мы видим вот у нас получились такие результат как
23:19
стандартной так абсолютная ошибка вот здесь вот так на тестовые обучающей выборке работают за такое количество
23:26
как мы видим например то же самое средняя квадратичная ошибка да здесь у
23:34
нас снижается достаточно быстро но мы видим меньше ста эпох у нас обучение не проходит для
23:42
данных версетти если мы сейчас здесь зададим ну например еще один скрытый слой или изменим
23:52
количество нейронов в этом скрытым слой ну например давайте добавь
23:57
он будет 120 перевыполнен на жку
24:05
посмотрим что получится скажу сразу что это задача все равно
24:10
исследователь стве и подбор конструкции нейросети мы сейчас здесь не рассматривал рассмотрим сам
24:16
подход к необходимо обучать данную модель и какие параметры для этого нам
24:22
необходимо менять изменять соответственно и как происходит сам процесс обучение вот собственно здесь
24:28
вот сейчас у нас и показ за 500 эпох у нас сейчас выполняется обучение и
24:33
результата мы визуализируем что мы здесь ведь добавили один слой сразу же практически в два раза быстрее нашу
24:40
модель начала обучаться но как мы видим зато добавили с шумами то есть тот самый эффект переключение при большом
24:45
количестве что тоже не является положительным моментом потому что получается что наши
24:52
нейросеть как он проще выразиться становится слишком умной да и не
24:57
рассматривать некоторые варианты реализации нашей модели в более так
25:03
скажем приближенным формате то есть по сути перри обучается что тоже не является положительный момент но здесь
25:10
как раз указано с помощью вот этого блока можно посмотреть а за сколько же
25:15
вообще можно эффективно и достаточно быстро обучить данную модель
25:21
мы видим здесь у нас автоматически выбирается ну где то что 40 но все равно
25:27
мы видим что она тестовый что она работает ну может быть не очень красив
25:33
давайте попробуем теперь изменить функцию активации но здесь можно взять
25:39
различную можно хоть и линейную тут на самом деле выбор функции
25:44
активации вот ну можно например тангенциально просто в качестве
25:50
иллюстративного примера попробуем ну
25:55
давайте хотя бы один слой изменим просто качестве примера смотрим что у нас поменять если мы изменим функция
26:02
активации одного слоя конечно можно там если писать не
26:07
серьезно они россии под конкретно дальше конечно нужно учитывать что можно функция активации менять не только для
26:14
отдельного слоя но и в принципе для каждого нейронов более того отключать или подключать различные входные вот эти
26:21
вот входы отдельных нейронов что та же задача отдельная здесь мы сейчас в группе о нам формате
26:28
только меняет по сути три параметра 4 количество эпох темп обучения количество
26:34
слоев функций активации в принципе количество нейронов слой получилось еще
26:44
хуже можно соответственно здесь изменить
26:50
настройки нашей модели и попытаться посмотреть как снизить вот эту ошибку мы
26:58
видим здесь даже уже после 40 эпоха фактически начинается такой вот процесс
27:05
цитирование вот этих вот результатов что конечно же не приводит нормального результат ну и
27:12
здесь мы видим это как раз таки что абсолютная ошибка что среднеквадратическое ошибка возможно
27:20
турнир приемлемый но мы видим что наша модель неустойчива и склонны к краске
27:26
переобучение ну и также мы видим что наш модель в нашем случае она имеет вот
27:33
такой вот характер ошибок на вот они здесь у нас в конце
27:39
распределены которые собственно показывает насколько она устойчива в
27:45
одном в том или другом направлении относительно тех самых функций
27:51
предсказания здесь я не указывал соответственно как можно достать из
27:58
нашей модели те самые данные но для вас сейчас в этом
28:05
из этого урока самое главное извлечь то что необходимо для того чтобы создать
28:11
хорошую нейросетевой модель необходимо следить во первых за критериями качества
28:17
а это ошибки абсолютная и среднеквадратическое и самое главное
28:23
настраивать нашу нейросеть зависимости вот этих вот параметр и глядя на то как она обучается сколько
28:31
эпох ей на это требуется сколько ошибка предсказания здесь соответственно
28:40
выводится да на это нужно ориентироваться и соответственно делать выводы о качестве решения нашей задачи
28:49
ну в принципе как можно далее использовать результаты обучения
28:56
я надеюсь мы с вами рассмотрим в следующем видео которая все еще уже непосредственно задачи которая позволит
29:03
нам оценивать результаты с помощью таких характеристик как рок кривая кривая
29:14
который позволяет нам оценить качество классификации качество соответственно
29:21
отработки на регрессионных моделях ну а сейчас для примера попробуйте на вот
29:27
этом дата сети выполнить то же самое только для прогнозирования например курса рубля или показателя то есть
29:35
заменить по сути наш один из наших предикторов и сделать сделать его факт не фактором
29:44
сделать его соответственно результирующем признаком вот такая вот
29:51
задач соответственно что здесь мы еще можем посмотреть кроме вот этих вот
29:58
настроек нам важно будет потом посмотреть как же можно вот оценить
30:06
относительно значений то самое предсказано значит где сама
30:12
регрессе то есть что мы должны туда подставить нашу модель и как наши нейросеть начинает это все реализовывать
30:18
виде прогностической модели но так как у нас уже видео переваливает за 30 минут то я думаю что
30:24
данный же пример мы рассмотрим в следующей части видео благодарю вас сегодня за вне
30:30
они и так учитесь создавать нейросети пробуйте смотрите потому что задачи
30:36
исследовательская в первую очередь единого рецепта построения для
30:42
конкретной задачи нет здесь нужно понимать как структурированные данные как они между собой соотносится то есть
30:48
вот эти вот соответственно соотношение как они если слишком сложны
30:53
и соответственно и структура должна быть сложнее если как у нас вот здесь достаточно простые но тем не менее
30:59
многомерном пространстве это будет все равно имеет сложный характер то соответственно здесь нужно наверное
31:05
больше слова попробуйте над этими данными поработайте поэкспериментируйте и самое главное для себя вы видите тот
31:13
случай когда у нас и шумов вот этих осцилляций будет меньше менаше не россии
31:18
будет обучаться быстрее и соответственно ошибка будет также наиболее небольшой
31:28
спасибо вам за внимание надеюсь это видео будет для вас интересно если в
31:33
данном формате по работе библиотека tensorflow вам интересно посмотреть еще мои видео то соответственно не задавайте
31:41
во

Поделиться: