No video

Сверточные нейронные сети | Глубокие нейронные сети на Python

  Рет қаралды 71,990

Andrey Sozykin

Andrey Sozykin

7 жыл бұрын

Краткий обзор архитектуры сверточных нейронных сетей. Страница курса - www.asozykin.ru....
Принципы сверточных нейронных сетей (convolutional neural networks):
- Локальное восприятие.
- Разделяемые веса.
- Уменьшение размерности.
Сверточная сеть состоит из чередующихся слоев свертки и подвыборки.
Нейроны сверточного слоя подключаются не ко всем нейронам предыдущего слоя, а к ограниченной области размером 3х3 или 5х5 нейронов (иногда больше). На этой области выполняется операция свертки с использованием так называемого ядра свертки - матрицы такой же размерности, как и область входных сигналов.
В нейронных сетях ядра свертки определяются автоматически в процессе обучения.
Слой подвыборки выполняет уменьшение размерности. Раньше использовалось усреднение, а теперь чаще применяется выбор максимального значения.
Рассматривается пример сверточной сети LeNet-5, которую разработал Ян Лекун для распознавания рукописных цифр индекса на почтовых отправлениях.
Для обучения сверточных сетей используется алгоритм обратного распространения ошибки с ограничением на веса.
При реализации проекта используются средства поддержки, выделенные в качестве гранта на основании конкурса, проведенного Общероссийской общественно-государственной просветительской организации «Российское общество «Знание».
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках:
goo.gl/kW93MA

Пікірлер: 66
@user-hm4tl3hy4u
@user-hm4tl3hy4u 2 ай бұрын
Андрей, было очень интересно, спасибо!
@T1railleuR47
@T1railleuR47 5 жыл бұрын
спасибо) только у вас в видео услышал про ядро свёртки, до этого я думал там происходит магия)
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Никакой магии, только математика!
@evgeniylepikov6185
@evgeniylepikov6185 5 жыл бұрын
Спасибо, первый источник в котором говорится о том откуда берутся значения ядра
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Пожалуйста! Кажется, это вещь, без которой нельзя понять остальное :-)
@evgeniylepikov6185
@evgeniylepikov6185 5 жыл бұрын
@@AndreySozykin Именно. Но видимо многие авторы не считают важным об этом упоминать.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
На самом деле это большая проблема при составлении курсов. Профессионалам часто сложно представить себя на месте новичка и оценить, что имеет смысл рассказывать, а что нет. Для профессионалов очевидно, что значения ядер определяются в процессе обучения (ведь это же глубокое обучение :-). Поэтому они не считают нужным об этом говорить. Но для новичков такие вещи далеко не очевидны и о них нужно подробно рассказывать.
@dmitrychernyak4397
@dmitrychernyak4397 5 жыл бұрын
Отличный курс. Спасибо!
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Пожалуйста!
@inbuckswetrust7357
@inbuckswetrust7357 5 жыл бұрын
Это я хорошо зашел, а то с керасом сейчас как раз балуюсь, и вообще только залез в NN очень доходчиво излагаешь и без излишней сложности.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Спасибо!
@leonidpopovski2727
@leonidpopovski2727 4 жыл бұрын
только полезная информация по теме: Горячее лето-2020: то потоп, то засуха. Ученые обещают планете новый рекорд tinyurl.com/y3o4x9eq
@romarizkov
@romarizkov 3 жыл бұрын
Чесно говоря непонятно, чем локальное восприятие свёрточной нейронной сети отличается от подсчёта обычной взешенной суммы входов нейрона - ведь там и там сумма произведений входов и весов. Далее, непонтяно где в ядре свёртки разделяемые веса? Что это такое? Чем от обычных весов отличаются
@user-ro3qo7wd8h
@user-ro3qo7wd8h 8 ай бұрын
что то с распознаванием лиц непонятно, на вход какое изображение поступает? Потому что на выходе получается множество лиц, а на входе тогда что было?
@annatarasova4052
@annatarasova4052 3 жыл бұрын
Очень понятный курс, спасибо))
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Пожалуйста!
@janavonm4376
@janavonm4376 7 жыл бұрын
ochenj krutoj kurs. spasibo :)
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+Jana von M, пожалуйста!
@AutoFightify
@AutoFightify 3 жыл бұрын
Очень классное видео
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@user-km4mn4wo9y
@user-km4mn4wo9y 6 жыл бұрын
Андрей, спасибо большое Вам за познавательные уроки! Возник следующий вопрос про слои в LeNet-5: В первом сверточном слое рассматривается 6 ядер свертки, затем на этапе подвыборки(второй слой) каждый из полученных подслоев первого слоя уменьшается в размерности. На третьем слое(второй сверточный) определяется 16 ядер свертки. Вопрос: Какая связь между 6 подслоями второго слоя и 16 подслоями третьего слоя(16 и 6 же не кратны друг другу. Если бы было, скажем 12 ядер свертки, то было бы ясно, что, например, к каждому подслою применяется 2 ядра) Спасибо!
@AndreySozykin
@AndreySozykin 6 жыл бұрын
+Никита Лазарев, прямой связи между количествами ядер на разных слоях нет. Обычно оказывается эффективно использовать больше ядер свертки на более глубоких уровнях сети. Однако конструктивного способа построения сети с нужными качествами нет.
@kraamisChannel
@kraamisChannel 6 жыл бұрын
Andrey Sozykin но как именно они идут? К двумя применяется по два ядра, а к другим по три?
@KArdiNaL458
@KArdiNaL458 6 жыл бұрын
Спасибо, но у меня возник вопрос по поводу датасетов. Как можно создать свой? Точнее говоря, в каком виде изображения подаются в программу. Например, если я хочу использовать для обучения сети, файлы формата .dcm где по факту пиксель по факту есть информация о градации серого в изображении. Просто не совсем понятно, как правильно подать в сеть данный тип изображения.
@Dima67574
@Dima67574 7 жыл бұрын
Спасибо большое, прекрасная тема. ждем еще !
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Пожалуйста! До нового года планирую выложить еще три видео.
@AlexNirt12
@AlexNirt12 7 жыл бұрын
спасибо за видео, но нужна нейронная сеть на php))
@elizathestranger8542
@elizathestranger8542 4 жыл бұрын
Спасибо за полезное видео. У вас замечательный канал. Лайк, подписка 👍🏻👍🏻👍🏻👍🏻
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Спасибо!
@4spam2no
@4spam2no 5 жыл бұрын
Неплохо конечно для 10 минут, но все, что там можно было перепутать он успешно перепутал :)
@HPMuwa
@HPMuwa 4 жыл бұрын
1:12 и 2:05 противоречат пункты друг другу. Полносвязная сеть не видит изображение как массив, а видит как набор (set), потому что каждый входной нейрон подключен ко всем нейронам следующего слоя и не зависит от порядка или последовательности.
@knkn5049
@knkn5049 9 ай бұрын
Рассуждая о распознавании машин разных размеров, что признак важнее чем его координаты. Я согласен, но роботы, которые перекладывают кубики, они по картинке определяют положение, у них нету усредняющих слоев? Как они ищут конкретные Точки на знакомом объекте (чтобы потом по их положению определить положение объекта) ?
@imedasheriphadze1145
@imedasheriphadze1145 2 жыл бұрын
Здравствуйте Андрей
@maximkononov7216
@maximkononov7216 4 жыл бұрын
Андрей, здравствуйте! Я новичок в вопросах сверточных сетей, но имеется опыт в обработке изображений с использованием различных фильтров. Мой вопрос очень простой, возможно даже глупый... ) Подскажите, после "прохождения" входного изображения шестью фильтрами, мы получаем шесть карт признаков. Что происходит дальше, правильно ли я понимаю, что каждую из полученных шести карт признаков мы проходим новой матрицей для получения новых признаков? Другими словами, мы используем шесть "независимых" потоков с различными ядрами сверток для получения новых карт признаков? Если это так, то правильно ли я понимаю, что сеть "растет" в ширину на количество потоков в прогрессии равной каждому новому ядру свертки? Или где-то происходит суммирование карт признаков для уменьшения числа потоков? Спасибо
@olegatormega
@olegatormega 6 жыл бұрын
Здравствуйте, у вас очень качественный материал по всему курсу, огромное спасибо за то что вы делаете. Скажите каким образом подбирается необходимое количество слоев свертки, слоев подвыборки, и в целом слоёв нейронной сети, не только сверточной, но и линейной. Есть ли какая то зависимость, от признаков, от объема выборки либо же от других параметров? Заранее спасибо.
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Сложность в том, что пока нет работающей методики подбора типов слоёв и их количества. Каждый раз приходится экспериментировать. Зависимость от объёма данных есть - чем больше данных, тем больше слоёв и нейронов в них может быть в сети. Если данных мало, а параметров в сети много, то будет переобучение.
@samsonovG
@samsonovG 4 жыл бұрын
Подскажите пожалуйста новичку, я использую pycharm как среду разработки, что мне нужно догрузить помимо python, чтоб хотя бы повторить то, что вы в уроках даёте, или может надо как-то специально настроить что-то в данной среде? Спасибо
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Нужно установить Tensorflow 2 - www.tensorflow.org/install
@samsonovG
@samsonovG 4 жыл бұрын
@@AndreySozykin спасибо!
@letYourMoneyGrowcom
@letYourMoneyGrowcom 7 жыл бұрын
Спасибо, Андрей! Особенно поравилось, что канонический пример сети из работы LeCun et al разобран полностью. А то когда я знакомился с темой - авторы многих тьториалов как попки его копипастили, но от и до не разобрал никто. А есть у Вас лекция в которой рассказывается, как сверточная сеть в процессе самообучения выбирает оптимальные ядра свертки?!
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+letYourMoneyGrow.com, сверточная сеть использует такой же алгоритм обратного распространения ошибки, как и другие нейронные сети. Об этм есть видео: kzbin.info/www/bejne/gabRfGCHmNaahck Но в сверточной сети есть дополнительное ограничение: веса во всех ядрах свертки должны быть одинаковыми. Это учитывается в процессе изменения весов.
@whatsonot9363
@whatsonot9363 7 жыл бұрын
Здравствуйте, Андрей! А как можно написать сверточную нейронную сеть, чтоб она не только распознавала объект, но и выделяла его?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Да, можно. Такой тип задач называется сегментацией. Вот ссылка на русскоязычную статью на хабре - habrahabr.ru/company/recognitor/blog/277781/. Также можно посмотреть англоязычную статью - people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf
@whatsonot9363
@whatsonot9363 7 жыл бұрын
Andrey Sozykin спасибо большое!)
@sergeyufimtsev711
@sergeyufimtsev711 7 жыл бұрын
А для распознавания цифр мы свёрточную нейросеть можем применить?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Да. Сеть LeNet-5 как раз была сделана для распознавания цифр. Но цифры хорошо распознает и обычная неглубокая полносвязная сеть. Обучить такую сеть гораздо быстрее, чем глубокую сверточную.
@mclotos
@mclotos 4 жыл бұрын
А если мы умножили значение пикселей на 0, как нам вернуть первоначальное значение чтобы воссоздать изначальную картинку?
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Если умножили на 0, то никак.
@mclotos
@mclotos 4 жыл бұрын
@@AndreySozykin значит 0 можно не использовать? Просто у меня идея в том чтобы обучить нейросеть находить цифры, буквы и геометрические фигуры и отправлять эту инфу дальше
@mclotos
@mclotos 4 жыл бұрын
Вот например сеть нашла треугольник, мне теперь нужно чтобы я в итоге получил от нее картинку, в которой будет этот же треугольник (прямоугольный/равносторонний/равнобедренный, того же цвета, под тем же углом, в том же месте где и в оригинале), только уже в новой картинке - очищенной от всего остального. и при этом я не могу быть уверен, что картинки, на которых нужно искать треугольник или круг или квадрат, будут четко определенного размера, скорее наоборот - размеры входящих картинок будут всегда разные - от 250х250 до 2048х1024
@trasheskit
@trasheskit 7 жыл бұрын
Курс классный, большое спасибо! Но... Почему это "мы анализируем соседние пиксели по горизонтали, но не по вертикали"? При использовании Dense (когда нейроны соседних слоёв соединяются по принципу "все со всеми") это не имеет значения же. Нейросеть сама определяет степень влияния разных пикселей подбором весов. Или имелось ввиду, что мы используем не Dense?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+kit-brain, если использовать Dense, то мы теряем информацию, что пикселы находятся рядом по вертикали. Во-первых, как правило есть несколько вариантов преобразовать одномерные данные в 2D. Во-вторых, мы можем преобразрвывать в 3D, и сверточные сети такое допускают. Конечно, Dense и без этой информации имее теоретическую возможность восстановить зависимости в данных. Но для этого потребуется гораздо больше данных для обучения, т.к. нужно будет настроить больше весов. При этом шанс переобучения гораздо выше.
@trasheskit
@trasheskit 7 жыл бұрын
Andrey Sozykin, я со всем этим согласен. Только не понятно как Dense не теряет информацию по горизонтали? Все входы можно перемешать и на качество работы и обучения сети это влиять не должно. Я просто ставлю под сомнение, что есть какая-то асимметрия в учёте информации по вертикали и горизонтали. По-моему её просто нет. Я не прав?
@user-qr3ix2yo5n
@user-qr3ix2yo5n 5 жыл бұрын
На странице "Популярные ядра свертки" ядро "Выделение границ" указано неверно. Пожалуйста, поправьте.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Что именне не верно в ядре "Выделение границ"? Попробовал его на сайте setosa.io/ev/image-kernels/, все работает.
@leonidpopovski2727
@leonidpopovski2727 4 жыл бұрын
Мальчику Пете на семилетие подарили барабан, а Дмитрию Ивановичу, живущему за стенкой, на тилетие подарили ружье. Внимание, вопрос. Через сколько дней они узнают, что кому подарили?
@smirnov-49
@smirnov-49 4 жыл бұрын
Мозг Пикассо, видимо, обладал возможностью переключаться и между скрытыми слоями?!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Возможно :-)
@pie4928
@pie4928 Жыл бұрын
А где phyton ?
@404Negative
@404Negative 6 жыл бұрын
короче говоря свёртка - это часный случай нормирования входных векторов.
@valle8336
@valle8336 4 жыл бұрын
Дайте письменные тексты
@leonidpopovski2727
@leonidpopovski2727 4 жыл бұрын
гарантия качественной информации в фактах: Горячее лето-2020: то потоп, то засуха. Ученые обещают планете новый рекорд tinyurl.com/y3o4x9eq
@Qwerty0.1
@Qwerty0.1 7 жыл бұрын
нужно больше инфы подробнее тут все поверхностно ниочом видос
@runningbathattendantprogra9582
@runningbathattendantprogra9582 7 жыл бұрын
Откуда получает данные ядро свертки? Нельзя так просто придумать свое ядро. Должны же быть какие-то правила. Или я что-то не понял? Ну хорошо. Пусть нейросеть сама придумала свое ядро свертки. В каждом языке программирования свои правила?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Ядра свертки обучаются с помощью алгоритма обратного распространения ошибки. Сеть сама определяет, какие ядра лучше всего подходят для решения задачи. От языка программирования это не зависит, а только от данных, которые доступны в процессе обучения.
@runningbathattendantprogra9582
@runningbathattendantprogra9582 7 жыл бұрын
Понял. Спасибо за ответ. Очень доволен вашим курсом. Коротко, по сути для начала и доступно.
Parenting hacks and gadgets against mosquitoes 🦟👶
00:21
Let's GLOW!
Рет қаралды 12 МЛН
Harley Quinn lost the Joker forever!!!#Harley Quinn #joker
00:19
Harley Quinn with the Joker
Рет қаралды 25 МЛН
The moment we stopped understanding AI [AlexNet]
17:38
Welch Labs
Рет қаралды 911 М.
Введение в графовые нейронные сети
29:30
REU Data Science Club
Рет қаралды 665
Твоя ПЕРВАЯ НЕЙРОСЕТЬ на Python с нуля! | За 10 минут :3
18:31
Хауди Хо™ - Просто о мире IT!
Рет қаралды 248 М.
[DeepLearning | видео 1] Что же такое нейронная сеть?
19:00
3Blue1Brown translated by Sciberia
Рет қаралды 786 М.
But what is a neural network? | Chapter 1, Deep learning
18:40
3Blue1Brown
Рет қаралды 17 МЛН
Самое простое объяснение нейросети
16:30
Программный Кот
Рет қаралды 117 М.