НЕЙРОСЕТЬ своими руками за 10 минут на Python
2019 ж. 8 Мау.
1 069 184 Рет қаралды
Пишем с нуля свою нейросеть (перцептрон).
На языке Python с разбором как оно устроено.
🚀 Курс по Data Science: clc.to/TgsH9w
===
Сообщите менеджеру промо-код "Хауди Хо" чтобы получить 10% скидку!
🆇 Обещанные ссылки 🆇
1) Numpy - pypi.org/project/numpy/
2) Прошлый урок - • Простая нейросеть на J...
3) Статья по функциям активации - www.aiportal.ru/articles/neura...
4) Методы инициализации весов - stu.scask.ru/book_ns.php?id=31
5) Крутой гайд для новичков по нейронкам - habr.com/ru/post/312450/
🔵 Наш TELEGRAM: t.me/howdyho_official
Наш ВК: vk.com/howdyho_net
Сотрудничество vk.com/topic-84392011_33285530
💗 Музыка предоставлена KZhead Audio Library.
"Чтобы пользоваться формулами - не обязательно понимать, как они работают" Отлично, теперь знаю, как надо было отвечать моему преподу по Искусственному интеллекту :D
Это не искуственый интелект а запрание записсаные команды ,это сеть не сможет развиваться
@@user-yy7rq4uq4f Эт да) Я это к тому, что сети изучали на предмете "Искусственный интеллект" в академке)
@@user-yy7rq4uq4f по сути - к решению она приходит сама посредствам многократного повторения, и подбора весов. тоже самое происходит у нас в голове, потэтому "придумать" решение значительно более энергозатратно чем успользовать уже "готовое" просчет модели это затратно - обработка значительно легче.
@@PavelMostovoy "Придумать" решение - это и есть использовать опыт многократного решения подобных задач.
Еще цитата от автора канала: "Чтобы программировать, не обязательно знать математику". Предлагаю вести цитатник от Хауди Хо.
"Все что произошло сейчас у вашем мозгу называется мышление" , лично у меня произошло короткое замыкание -_-
Короткое ты хотел сказать?)
@@wildfire539 виш , даже тут проебался , спасибо
😁😁
Это не урок а выебон
@@nickiminaj0882 Где ты увидела слово "Урок"?
Полный код из видоса. Не благодарите))) import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) training_inputs = np.array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]]) training_outputs = np.array([[0, 1, 1, 0]]).T np.random.seed(1) synaptic_weights = 2*np.random.random((3, 1))-1 print("Случайные инициализирующие веса:") print(synaptic_weights) # Метод обратного распространения for i in range(20000): input_layer = training_inputs outputs = sigmoid(np.dot(input_layer, synaptic_weights)) err = training_outputs - outputs adjustments = np.dot(input_layer.T, err*(outputs*(1-outputs))) synaptic_weights += adjustments print("Веса после обучения:") print(synaptic_weights) print("Результат после обучения:") print(outputs) # ТЕСТ new_inputs = np.array([1, 1, 0]) # Новая ситуация output = sigmoid(np.dot(new_inputs, synaptic_weights)) print("Новая ситуация: ") print(output)
Работает! Плюс тебе человек!
четко!
что делать если "." не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
sps
@@blxssxddd а ты куда поставил?
При вводе [0,0,0] ответ будет ровно 0.5 Чтобы такой фигни не было, надо добавить ещё 1 входной нейрон. На входе у него всегда 1. Знакомьтесь, "Нейрон смещения"
Какие люди :D
@@misterbebra2460 Мяу
да, bias обязательно нужно указывать. но это же хауди хо: нужно громкое название для бессмысленного видео, которое 90% не поймут, а 10% знающим это нафиг не надо смотреть
Здравствуйте, а как добавить нейрон смещения?
@@user-wp2fv2ic4t Хорошо, попробую. Большое спасибо
Под каждым видосом с каким то кодом найдётся чувак, который напишет, что ничего не понял и соберет много лайков
жЫза
ничиво ни понел
заебали флуды, из за них в коменты перестал заходить давно. ютубу давно пора вести рейтинг и санкции флудбоям
Ну а чё ты хотел? Автор канала делает кликбейт и говорит что за 10 минут объяснит то, на что месяцы уходят. Конечно, ничего непонятно.
Под каждым видосом с какимто кодом найдется чувак, который напишет, что под каждым видосом с каким-то кодом найдется чувак, который напишет, что ничего не понял и соберет много лайков.
Спасибо тебе, автор ролика. 4 года назад я посмотрел это видео и принял решение перейти в программирование на питон. Месяц назад стал синьор-разработчиком. Сейчас пересмотрел снова спустя 4 года. Аж прослезился немного.
Молоток )
Понятно, класс, что так четко объяснено, сейчас по ссылке попробую потренироваться.
Прекрасные понятные уроки, на очень непростые темы по-простому. Огромное спасибо! Смотрим только вас, потому что у вас реально можно научиться и получить честную информацию!
Нихуя не понял, но очень интересно!!
Ахах только что написать хотел
@@user-mw1wb4bp2l не ты один
там же вообще элементарно всё
Так же написать хотел))
то чувство когда все что ты знаешь это как написать страничку на html и вдруг решил посмотреть такой видосик.
Понял 70% информации и было довольно таки интересно:) Хауди, радуй так ещё чаще:)
Все понял на все 100%, спасибо, Хауди!
В общем, надо знать математику хорошо. Расходимся.
Здравствуйте маньячелло
да ппц, достали эти челы которые говорят что мол не надо формулы знать, математиком быть и начинают ебашить уравнения от которых хочется в гуманитарии зарыться
Ну... а какого класса?
Годный видос) спасибо за твоё творчество, хауди хо!)
то чувство когда пролистал почти 20-30 комментов с плохими отзывами, и думаешь: " хауди наверное не читает коменты", и вдруг ты видишь это!
АААОАОАОАОА!!!! Только в прошлом видео в комментах спросил про создание нейросетей, и .... НОВЫЙ ВИДОС ))) Спасибо хауди)))
Мозг принял входные данные, увидел выходные и пошел отдыхать
Если и рассматривать примеры,на примере таблицы,то можно с уверенностью сказать,что выходной параметр,зависит от совокупности расположения элементов и их последовательностью,т.е тем самым расширить данный урок и показать как они взаимодействуют между собой
Выпусти видос: "Нейросеть для чайников"
Так это и был видос "Нейросеть для чайников", просто у этого видоса название другое
Ага, десятиминутный))
@@user-wo8wd9kr1b А ему что тратить время на таких чайников как я? Вот он и "экономит" время
@@mrmiquy6640 Сложно очень и непонятно немного
*Мне почти понятно!*
Аааа, красавчиик. Давно хотел что то такое
1:55 и тут я понял что видимо в моем мозге нет никаких сетей
+
нда я тоже ее не решил :D
@@PianoElipse спустя 3 месяца я её понял
))))) пахахаха
уххх... не одна я такая
Спасибо за короткий пример, где все по делу!
Очень хорошая книга для чайника: Тарик Рашид "Создаем нейронную сеть". Понятное объяснение непростой математики, которая лежит в основе нс. На мой взгляд, надо прочитать или посмотреть несколько авторов, тогда сформируется свое понимание. Хауди Хо выражаю благодарность за отличную популяризацию многих полезных вещей!
Сразу лайк, интересная тема
Как в тему-то. Только сегодня проставил зачет по методам распознавания)
Всё очень понятно!!! От меня царский Лайк!!!
Хауди, огромное спасибо, познавательно.
Очень годный видос. - Мозг. Понял, что ничего не понял, но лайк поставил.
Всё понял. Создал за 7 минут. Благодарствую.
Хауди, сможешь в одном из будущих видео объяснить виртуальное окружение и тонкости работы с ним
Чувак, я хотел создать простой ИИ что бы с кем то болтать, но взломал пентагон, чё делать._.
сильно поломал его? Сломанную вещь надо сделать пака не кто не узнал об этом.
Одинокий чел
Такаяже ситуация
Что это?
Заломай обратно
1:54 мой мозг вычислил что :если 1-й столбик 1 и 3-й столбик 1 то на выводе тоже 1. Т. К. не хватило данных о влиянии 2-го столбика на результат. Нужно было добавить в пример 5 : значения 1;1;0. = 1 Ну а в примере 6 уже спрашивать что будет на выходе если на входе 1;0;0 . Или я не прав?
Я даже не понял что ты сказал
Viki pedia, я вообще подумал, что результат - это конъюнкция 1-го и 3-го столбца и дизъюнкция результата со 2-ым 😂
Lil Ghost я тоже
даже если добавить твой 5й вариант в обучение то при пихание в просчет например 0,0,0 результат вычислений 0,5. в моем случае работоспособен только пример автора) т.е. 1,1,0 вычисляет правильно, 1,0,0 вычисляет правильно, любые другие интерпритации значений нет.
@@nikkho625 точно, пихнул ему training_inputs = np.array([[0,0,1],[0,1,1],[1,1,1],[1,1,0],[1,0,0]]) training_outputs = np.array([[0,1,1,1,0]]).T Довольно просто, если новая ситуация ([0,0,0]), должно выдать 0 ровно, но нет, выдаёт 0,5
Случилась эпилепсия, спасибо.... Видео кста очень информативное.
Ничего непонятно , но безумно интересно !! Автор респект
Привет Хауди ✌️ Интересное видео)
Не, ну здесь лайк, однозначно!
Мой мозг не понял таблицу, я просто вспомнил информатику, типа таблица истинности
Я тоже сначала про НЕ-ИЛИ вспомнил, но потом уже заметил третью переменную. Ассоциативное мышление, блин... Представление данных - уровень "что я делаю?"
Я такая же х*йня
я тоже
У вас у всех уже имеется на это дело натренированная нейросеть
@@refrigerator887 почему бы и нет. -Джарвис -Да сэр?
Давай ещё видео про нейросети на питоне. Развивай эту тему дальше
Комментарии этого видео: 99,999% - Нихуя не понял, но очень интересно! 0,001% - мой комментарий.
Походу он сам не понял что написал 🤔
Ты только что обосрался
Ты не правильно посчитал 99,999+0,0001=99,9991% аххаахахха
Ахахах изменил типа умник
@@trage5962 все равно он тупой, он пишет, что его комент 0.001 от всех коментов. На данный момент комментов всего 600. Из этого следует, что это не один коммент, а 0.6 коммента
Спасибо, благодаря вам заинтересовался нейронными сетями.
Понял многие моменты только потому, что сам изучал эту тему)
1:59 вывод может быть как 1 так и 0: например если задача предразумевает только что у первого значения должна быть единица то вывод 1, а если подразумевает что главное что бы было в первом значении и в третьем то 0
Хауди, привет можешь пожалуйста сказать какие книги читать и какими сервисами пользоваться для full-stack разработчика
Туалет на вокзале, топовый бесплатный сервис. Можно и как жилье использовать. Вообще всё в одном для флу стэка.
Блять нашел кого спрашивать. Прямо у профи совета просишь
оу привет я ждал твой новый видос и мне кажется ты лучше всех делаешь видео уроки по языкам программирования у тебя всегда годный контент
В большинстве случаев ml и data science идут рука об руку, поэтому важную часть также составляет визуализация полученных данных и постановка задачи, неплохо было бы снять полноценный ролик со всеми плюшками
Реально респект за такую подачу!
Хауди Хо™ - Просто о мире IT! *годно! давай еще , так просто и понятно объяснил*
Вот мало что понятно если честно. Какие ещё весы w1 w2 w3? Что это за весы такие?
О-па-чки, ещё один годный контент подъехал
Языки можно изучать вечно, они бесконечны как наша вселенная
Георгий Иванов это у тебя были мысли вслух?
Когда не понимаешь что происходит в коде и просто перепечатал готовый пример. Отличное видео, четко показывает что автора слушать не надо.
Даёшь продолжение изучения Pythona)))
Сейчас сказал другу: Хочешь узнать от чего точно можно сказать . Я ему включил это видео в скорости 1.25 что бы побыстрее. Он выхватил и с серьёзным видом смотрел. Сказал спасибо и попросил дать ссылку на канал. Я попросил его пересказать что там и он в примерной точности это сделал. Я охренел. Потом вспомнил что он ОГЭ матан сдал почти на максимальный балл. Я не помню какие там быллы. В общем я удостоверился, в том, что ты реально знаешь о чем вещает простолюдинам. К стати. Я на тебя друга навёл. Надеюсь он станет просвященным как ты
Ты топ!!!Лайк сразу же)))Спасибо за интересный видос.
Привет! Объясните почему в for нужно переопределять переменную input_layer = training_inputs ? Почему нельзя сразу написать вот так outputs = sigmoid(np.dot(training_inputs, synaptic_weight)) ?
Привет Хауди, смотрел недавно красивые ролики про фракталы, и после чего возник вопрос, а можно ли создать(написать) программу в которой фракталы могли случайным образом генерироваться и например окрашиваться в разные цвета???
C# легко
Чел, ну какой метод обратного распространения ошибки? Ты же используешь обычный градиентный спуск. И зачем двухслойной сети функция активации? А ну ещё матан не обязательно знать, понимаю.
Я как раз на эту же тему сейчас снимаю практический курс на с# ))
Молниеносная подписка.
Норм курс, рекомендую.
Не ожидал что найду канал как твой в комментариях
О, привет
@@_dyats Спасибо )
Хауди привет!У меня две новости хорошая и плохая.Хорошая состоит в том,что ты затронул очень актуальную тему.А плохая,что очень сложно воспринимать её без примеров.Сделай стрим с обучением на примере простой игры.Есть куча вариаций в американском сегменте.Но в русском нет ничего толкового.Спасибо!
а что нужно сделать, если зависимость строиться не на просто совпадениях в какой-то колонке, а на количестве единиц, если например нужно, чтобы две единицы всегда давали 1, а 3 или 1 - 0?
два часа ночи! Завтра на работу рано утром а я бля смотрю непонятную но интересную дичь!
Traceback (most recent call last): File "..\Playground\", line 28, in synaptic_weights += adjustments NameError: name 'adjustments' is not defined synaptic_weights += adjustments
not defined, написано же, чего тут непонятного? ;-)
Хауди ты лучший!!
Хай Хауди! Крутой контент
"Урок" из разряда: щя с умным видом зачитаю текст, и вставлю рекламу...
"Зачитаю текст" - текст который подготовил до записи видео.
ты чо раскомназдор пащиму ты не можеш заблакировать тилиграм
@@gatix7120 Ты имеешь ввиду "позаимствовал"? (kzhead.info/sun/nsqtYaWCcImMd6M/bejne.html) Не в обиду хауди, но если и брать чей-то контент, то хотя бы отсылаться к нему
@@arsalannamnanov1820 ахахаха -он даже код списал с него. Только тот чувак объясняет обстоятельнее , и без тревожной тупой музыки. Блин это как наши певуны ртом ,все американские песни перепивают и выдают за свои.
Хауди вобще стырил видео просто.
*Нихуя не интересно, но очень понятно!*
Чертов гений!
🤦🤦🤦
Если вы ничего не поняли, то более подробное разжовывание информации, схожей с представленной на видео, можно найти в книге Тарика Рашида "Создаём нейронную сеть".
Круто .Го курс
Вот только нихрена не очевидно, что на выходе функции в итоге должно быть значение из первого столбца, это может быть с такой же вероятностью и конъюнкция значений из первого и третьего столбца например, и тогда нейросеть выдает совершенно неправильное значение на тесте. Так что пример не очень подходящий и учить сетку надо на большем наборе данных
Влад, базара ноль, но ты слишком буквально все понимаешь. Обучение нейросети на то и обучение, какой пример имеем, на том и учим. И естественно, чем больше вариаций/примеров, тем точнее получится результат. Исходная формула никому неизвестна, пока автор не представит таблицу с исчерпывающим вариантом комбинаций. Автор просто озвучил явно бросающуюся на глаза закономерность, и имея лишь такой ограниченный набор вариантов, трудно отрицать отрицать его догадки. Вот если будет больше комбинаций, тогда и нейросеть по-другому научится. Я, кстати, увидел в примере формулу x1_И_(x2_ИЛИ_x3). При таком варианте второй столбец тоже играет роль
Где же ты был когда я диплом писал)
"Чтобы пользоваться формулами - не обязательно понимать, как они работают" - не ожидал от тебя такого!!! Сбился ты с пути истинного !
Годное видео. Доставило.
А как на счет вычисления любого числа последовательности (не ограничиваясь 1 и 0)? Код будет гораздо сложнее?
Используй библиотеки
0:25, я выключил ролик
а на какой секунде ты всетаки решил написать коммент?
@@Dake7 ты решил докопаться до комментария годовой давности?
@@yolydifons7473 Почему нет......
@@nihilist6089 лол
Это действительно интересно
Спасибо за видео, очень интересная тема, хорошее и перспективное направление для саморазвития. Нужно попробывать
А если число с буквой Е в результате,это норм?(это при большом количестве циклов)
Да
Например 1.5e-6 это 1.5 * 10^6 что равно 1.5/1000000
К слову о первом примере: почему именно про первый столбец речь? Почему не про произведение первого и последнего числа?
Потому что есть только 1 и 0, а произведение может выйти за эти рамки
@@Maxutka13 Как произведение 1 и 0 может выйти за рамки?
@@stranger-SM Бля, я протупил, думал он имел ввиду сумму
Братан. Сделай гайд что нужно знать и как учить если хочешь заниматься веб дизайнером!!! Буду благодарен
Благодаря этому видео, я не понял основы машинного обучения, но начал интересоваться ими. Спасибо!
6:18 - не забыл напомнить зрителям что такое "транспонировать" ?
Хауди. Когда твой Wallpaper выйдет?
Когда рекламу купят на эту тематику.
Абрахам а как называется песня в начале видео? Качает просто :D и какую книгу посоветуеши по Пайтауну чтобы было не очени сложно
Рекомендую книгу "Грокаем глубокое обучение", там все это и даже больше рассказывается и объясняется подробнее
Сложно! Но понятно! Ты тооооп! Я вот кучу видео пересмотрел и прочитал, но понял только посмотрев вот это видео! Только вот иногда можно поподробнее, плиз!
Делай только о питоне, пж))))
Я догадывался про систему весов в технической реализации синапса. Спасибо, что подвердил и прояснил. Куда копать? С чего начинать? И пишут ли нейронки на JS или Go?
Спасибо! SeemsGood
print(sigmoid( np.dot(np.array([[0, 1, 0]]), synaptic_weights) )) выдаст "0.44".
Это потому, что не обязательно знать математику и как работают функции, получил правильный ответ в одном конкретном случае - успех, пилим видос
Хауди, было бы очень круто, если бы ты записал курс по созданию небольшого блога с нуля на php ^^
У него есть про все языки за 1 час с нуля, я уже все выучил кроме нейросетей
Так приятно ставить "царский" лайк))
Специально переписал код и скомпилировал. Хауди, есть трабл. Еденица в тестовом выводе выходит очень близкой (в виде 0,99443 и т.д.), а вот ноль почему-то далёкий, даже ближе к еденице. Только что выпало значение 0,5, которое вообще-то должно быть как 0. В чём проблема?
Если ввести в тест [0,0,0] или [0,1,0] ответы 'ии' дает [0.5] и [0.44854606] соответственно. Хотя по идеи ответы должны быть нули и единицы. Подскажите почему так произошло?
как я понял он не нашел взаимосвязи с другими данными, попробуй ввести все массивы из чисел с 0 и 1, наверное, сработает
Нейросеть вбирает данные, то, чего ей не хватило вылилось в неточность выхода.
Потому-что результат до сигмоиды равняется 0. Например веса равняются w1, w2, w3 А числа 0, 0, 0. Результат до сигмоиды равняется 0*w1 + 0*w2 + 0*w3 = 0. Поэтому все-равно какие данные результат будет 0.5. Потому-что сигмоида в точке 0 равняется 0.5
@@user-se9hy1if5z Большое спасибо, я все думал: "почему так происходит?"
Для тех кто не понял: нейронная сеть - очень сложная нелинейная многомерная функция которая аппроксимирует (приближает) распределение данных, а ее обучение - поиск таких параметров этой функции при которой разница между распред. данных и значениями функции минимально. Тот же принцип работает в простом методе наименьших квадратов
Это еще что.. Я вот вам скажу еще коечто.. Нейросет в идеале - это копия человеческого тела. Загляните внутрь него.. На уровне... хотя бы клеток ДНК и РНК..Там каждая клетка работает по более "простым" биопрограммам... в которых заключены милионы других "простых" функций... И это только уровень клеток... Я молчу еще про уровень атомов.., кварков, бозонов Хигса, про уровень "инфузории туфельки", про клетки вирусов, про клетки кишечников, желудка, сердца.... Какой тут Искусственный Интеллект, который пытаются создать "мартышки с гранатой"....
Больше видео с Python!!!
вопрос - можно написать бота на питоне vsa чтобы мог сравнивать спред обьем прогрес результат --подобие искуственного интелекта ?????????????
Хауди, чё за игнор. Уже 5 раз звоню тебе на номер. Не отвечаешь, занят наверное) 1:15
@Пожиратель Кишок ты вообще в юмор не можешь? Жаль...
В Узбекистане код +998
@@alexwebb1501 Он Узбек ну я незнаю точно но его зовут Абрахам
Шутка
Ты его телка и он тебя бросил? )))))
побольше таких видео! после того как я посмотрела презентацию полного автопилота Tesla, то что рассказал Андрей Карпаты, их директор по нейронным сетям, очень интересно, как это все "изнутри" устроено )
Наталья Ульянова только устроено это далеко не так , как в видео )
Здравствуй Хауди. Хотел задать тебе вопрос, разве есть случайные числа? или они все-таки называются псевдо случайными?
Сделай ещё пару видео о нейронных сетях!)))
Он в них ничуя не понимает
*Нейросеть это сеть, но нейро!*
В начальном примере у меня получился ответ 0 по формуле A and (B or C). Правильных ответов несколько. Откуда мне знать что аватар задачи задумал иной ответ?
Недостаточно входных данных, поэтому и разные ответы у многих. В принципе ИИ и создан определять наиболее вероятные значения на выходе
Хз, я вычислил по большинству. Типа если две единицы, то ответ будет один.
Спасибо!
Спасибо)