Комментарии 18
А при распознавании картинок алгоритмы надо полагать усложняются кратно? Я сомневаюсь, что там идет анализ картинки попиксельно, но можно как-то общими словами объяснить принцип? Вот есть 100000 картинок котов и собак. Как строиться код?
Идет анализ не только попиксельно, но и "послойно". На входе будет 3 слоя-канала - красный, зелёный, синий. А дальше с помощью операции свертка (которая выделяет паттерны и обычно уменьшает размер) количество слоев-фич увеличивается.
В итоге в конце у нас из картинки 128 на 128 и 3 цвета получаются 256 фич размером 2 на 2. Фичу можно воспринимать как некий анализатор, например фича два покажет были ли глаза на картинке. А фича 5 скажет, что неба не было. Но на самом деле такого понятного нам разделения там нет.
Затем это разворачивают в плоскую модель где у нас получается 1024 (25622) нейрона. Затем обрабатывают их как в классической сети.
То есть еще туда модуль распознавания изображений добавляется?
я бы сказал что не 3 слоя rgb... а hsv - т.е. градации серого (яркость), цвет и насыщенность.
так будет ближе к реальности.
Надо тогда уточнить в какой реальности. Взять хотя бы те же yolo, там на входе rgb
ну как бы ребёнок объяснял, кот на картинке или собака?
Про форму ушей, цвет и пр.
У перцептрона (вики https://ru.wikipedia.org/wiki/Перцептрон) всё сводится к поиску зависимостей массива значений цвета и ответа "собака/кошка".
Зависимости могут быть очень простыми - например если в массиве много значений зелёного цвета, значит вероятность что это собака больше.
Почему? Можно открыть поиск по картинкам в гугле. Собак часто фотают на улице на фоне травы и кустов. Котов чаще дома на диване.
Ничего сложного тут нет, просто статистика. Никакого анализа в человеческом понимании тут нет. Но при огромных объёмах входящих фото по которым расчитаны тысячи таких простых зависимостей результат получается хороший.
А чтоб идентифицировать котиков можно?
Спасибо за простой пример с XOR-ом
Я бы пошёл ещё дальше и не использовал бы библиотеки numpy, чтобы даже школьник понял, как образуются веса для связей.
Кажется, вот тут опечатка:
weights1: для связи между входным и скрытым слоем (размер 2х4)
weights2: для связи между скрытым и входным (?) слоем (размером 1х4)
3. если код будет корректно отформатирован, то его будет легче воспроизвести без лишних правок. Я имею в виду вот это:
def initialize_weights(input_size, hidden_size, output_size):
np.random.seed(42) 4. На картинке у вас сначала A и B как вход для XOR, потом вы говорите, что вход для XOR это X и Y, а затем в коде программы обозначаете X - входом нейросети, а Y - выходом. Новичку очень легко запутаться!
Очень жду правок статьи, и потом буду рекомендовать её моим знакомым школьникам)
вот здесь:
weights2: для связи между скрытым и входным слоем (размером 1×4)
случайно не опечатка?
Спасибо (͡°͜ʖ͡°)
Это просто математическая функция с большим количеством параметров подобранных таким образом при обучении чтобы она умела предсказывать примерно следующие значения. Вот до одного предложения упростил описание ллм :)
Вы реально всю статью с примерами написали только для того, чтобы в конце вставить ссылку на Bothub?

Как написать простейшую нейросеть на python, простыми словами о сложном