Как стать автором
Поиск
Написать публикацию
Обновить
56
0.2
Александр Кузнецов @kuza2000

Программист

Отправить сообщение

Попробуйте это реализовать. Вот это было бы реально чума!)

https://arxiv.org/abs/2210.14889

Файл не просто защищен — он невидим.

Увы. Хорошо виден, даже если уберите сигнатуру. Не глазом виден, конечно, а с помощью простых и распространенных детекторов.

Статья, бесспорно, полезная для изучения технологий. Но сигнатуру оставлять нельзя, уже написали.

Ну и метод встраивания в младшие биты обнаруживается очень легко, даже без сигнатуры. Перспективны методы, не изменяющие энтропии данных. Они есть, но что-то я не видел хорошей реализации.

Наоборот, считается что обучающая выборка уже заранее очищена от шума. И это понятно, потому, что нейронные сети действительно не могут за ВАС решить, что шум, а что нет. Может быть это не шум, а просто нестандартное изображение.

Под шумом я имею ввиду не плохие примеры, а лишнюю информацию. Например, учим отличать мужчин и женщин. В обучающей выборке есть карие, голубоглазые, блондины, брюнеты. Вот все эти перечисленные признаки - шум. Но сеть этого не знает и может в процессе обучения к ним привязываться. Например, в выборке будут большинство мужчин - блондины, а женщины - брюнетки. Если после этого показать сети блондинку, он может сказать на нее "мужчина") А если мы полностью очистим входные данные от шума, то на выходе останется один бит информации, и это будет решение)

С backpropagation как раз то "до упора" сеть НИКОГДА не обучишь, он не сходится. 

Стоп-стоп-стоп, откуда вы это взяли? :)) Можете дать мне ЛЮБЫЕ данные, и я обучу на них сеть, сведя ошибку в ноль! Совершенно ЛЮБЫЕ. Просто увеличу мощность сети до необходимой величины - и все. С backpropagation сеть сходится очень хорошо, и на любых данных. Конечная ошибка определяется только соотношением мощности сети и энтропией во входных данных.

Я очень много игрался с НС лично, своими руками. И первым делом, для проверки, что код написан верно, я обычно увеличиваю мощность НС и смотрю как сеть сходится в очень маленькую ошибку. Если этот тест пройден - начинаю уже смотреть ошибку на тестовых данных.

Почему же не можем. Возьмите например алгоритм ID3, и отделите.

Сможет этот алгоритм удалить с изображения информацию о цвете глаз человека? )
Цвет глаз - это шум, по отношению к задаче определения пола.

Тогда уже честнее сразу объединить обучающую выборку с тестовой и играться сколько хотите. А уже затем проверить в независимом исследовании.

Да, часто именно так и делают. Данные для обучения делят не на две, а три части. Первая используется для обучения, вторая - для контроля обучения. А третью никому не показывают до окончательного, финального тестирования, которое проводится один раз. Еще более продвинутый метод, это использовать кроссвалидацию (ну и финальное тестирование, конечно).

Я ценю ваши теоретические исследования. Но, если честно, я не очень понимаю, ваши цели. Что вы хотите сказать/доказать? Что нужно использовать не backpropagation, а что-то другое? Ну так сделайте реальный алгоритм на ваших идеях. Протестируйте его на том же MNIST, это очень простой тест. Это уже будет интересно. Сейчас же я вижу, что вашим исследованиям сильно не хватает практики)

Сформулируйте, пожалуйста, что означает этот термин вообще? Я не могу найти ни одного научно определения. Точнее, нужно спросить себя "Как определить математически когда наступает переобучение" - и в ответ получить "никак, никак, никак"?

Научного определения я действительно не знаю. Возможно, оно есть, просто не знаю.

Как это выглядит на практике, достаточно хорошо известно. Есть задача обучения с учителем, задача классификации. То есть, у нас есть входные вектора, и для каждого определен класс. Во входных данные всегда есть шум, лишние данные. Допустим, мы тренируем сеть распознавать цифры. Все данные, которые не относятся к тем, что нужны для распознавания - это шум. Например, изменение толщины линий, позиция символа, его размеры, варианты написания, и т.д. Все эти данные есть во входном векторе, но они не нужны. Отделить их мы не можем. Если бы могли - нам не понадобилась бы НС. Когда мы учим сеть, ей нужно выделить полезные признаки и игнорировать шум. Но, на самом деле, сеть не может решить эту задачу - для нее шум и полезные признаки не отличимы.

Но есть спасение. Полезные признаки повторяются для одинаковых классов, а шум более уникален. Но четкого разделения нет. Для части одного класса может быть один набор полезных признаков, для другой части этого же класса - другой. И шум может повторяться.

Обучающую выборку делят на два набора - один для обучения, другой - для тестирования.

Когда сеть обучается, то она начинает запоминать наиболее частые признаки, которые отличают один класс от другого. Затем менее частые, и т.д. Если продолжать процесс "до упора", а сеть имеет достаточную мощность, то она запомнит все признаки, в том числе шум. Про такой вариант говорят "запомнила примеры". На обучающей выборке будет великолепный результат, на тесте - полная ерунда. Поэтому в процессе обучения контролируют ошибку как на обучающем наборе, так и на тестовом. На обучающем ошибка будет падать всегда. А вот на тестовом она будет падать, достигнет минимума, а потом начнет расти - это и есть переобучение, когда сеть начала "изучать" больше шум, чем полезные данные.

Для иллюстрации могу вспомнить байку, когда сеть учили узнавать танки. Выучили, получили очень хороший результат, скажем 99% точность. Потом взяли еще набор фото. И на нем вдруг полная ерунда, показываешь авто или человека - она говорит "танк" с полной уверенностью! Наконец один товарищ заметил, что на все фото с пасмурной погодой сеть говорит "танк!". Посмотрели обучающий набор - а там все танки сняты в пасмурную погоду, а в качестве "не танк" добавили множество случайных фото, где уже погода разная:) Это пример, конечно, плохих данных, и даже не про переобучение. Но он показывает то, что сеть совершенно не знает, какие признаки важны, а какие - нет. Какие шум, а какие - полезны.

Прочитал ваши статьи. Что могу сказать.

  1. Перцептон Розенблата, это обычный перцептрон с одним скрытым слоем и зафиксированными весами первого слоя. Инициализируются случайно. backpropagation для его обучения использовать можно, такая архитектура реализуется в любой развитой библиотеке ML за 20 минут. Он будет делать то же самое, что и код из ваших статей - увеличивать "хорошие" связи, уменьшать "плохие". Да, можно тут же реализовать и оригинальный алгоритм, это тоже просто. И сравнить. Сильно сомневаюсь, что оригинальный алгоритм будет работать лучше.

  2. У вас почему-то посыл, что backpropagation - это плохо, так как сходимость не доказана, а вот Перцептон Розенблата - это круто, сходимость доказана. На самом деле все обстоит по другому. backpropagation - это дальнейшее развитие того метода, который предложил Розенблат. Некст левел, обобщение с гораздо большими возможностями.

  3. Перцептон Розенблата может переобучаться - только в путь. Возьмите, к примеру по несколько десятков цифр из набор данных MNIST, обучите на них перцептон Розенблатта и постройте кривые обучения. В качестве теста используйте оставшуюся часть набора. Средний слой должен быть достаточно большим, попробуйте начать с 500. Красивые кривые переобучения вас удивят :)

что именно для перцептрона Розенблатта существует теорема сходимости. Именно, он позволяет гарантированно найти решение для любой задачи, только если хватит вычислительных мощностей. Для backpropagation - это не так, наоборот маркетологи придумали смешной термин "переобучение сети", попробуете это объяснить?

Я вообще это не понимаю.

Перцептрон - это архитектура НС, backpropagation - это метод обучения. Почему вы сравнивает архитектуру с методом обучения? Тот же перцептрон можно обучать с помощью backpropagation.

А переобучение - это совсем другое. При переобучение сеть замечательно сходится. Просто она сходится не туда, куда нужно экспериментатору. И это не проблема алгоритма, просто сеть начинает запоминать примеры. Даже человек делает точно так же в похожих ситуациях.

Причем тут маркетологи, тоже не понимаю, этот термин рожден десятки лет назад.

В том то и дело, что при переворачивании не нарушается "связанность" пикселей. На первичных слоях вообще ничего не меняется - они выделяют элементарные признаки: вертикальные линии, горизонтальные, наклонные и т.д. А вот при смешивании пикселей они работать перестанут. Копните устройство сверточных НС и поймете сами.

Вообще, со зрением проводили очень много экспериментов. Еще в 70-е проводили эксперимент с котятами, которым запрещали видеть вертикальные или горизонтальные линии. И когда их выпускали в реальный мир, котята "вертикального мира" не видели горизонтальные предметы и наоборот. Не то, что бы не узнавали их, а просто не видели, совсем. И никогда не научились. По всей видимости, "сверточные слои" формируются в раннем возрасте и потом их перестроить невоможно.

Да, но видел аналогии между устройством зрительной коры и сверточными НС. А сверточные НС чувствительны к расположению пикселей. В общем, вопросы остались...

Все верно. Обычный хайп вокруг новой технологии. Пройдет. Так уже было много раз. Станет ясно, где есть польза, а где - нет.

Причем, когда сейчас говорят "ИИ", почему-то имеют ввиду одну-единственную технологию, которая недавно показала впечатляющие результаты, LLM.

Фантазии ни в коем случае оставлять нельзя, это приведет к полной остановке прогресса)

но 1с это топ продукт

Нет, 1с - это не топ продукт. Я, как человек, достаточно хорошо знающий всю кухню 1С и питон могу сказать, что всю 1с можно превратить во фреймворк на питоне. Плюс к этому адаптация средств разработки и плюс что-то типа редактора форм. При полном сохранении функционала и всех возможностей получится:

  • Стоимость разработки такого фреймворка меньше (снижение цены для конечного пользователя).

  • Скорость разработки "конфигураций" - такая же высокая. На питоне пишется так же быстро, как на 1С.

  • Современный развивающийся язык с ООП, значительно более быстрый. Да-да, питон медленный, но язык 1с еще намного медленнее :)

  • Затраты на поддержку такого фреймворка - так же меньше.

  • Возможности такого фреймворка и его кастомизация позволяют значительно расширить круг решаемых бизнес-задач, увеличить рынок. Выйти на новые рынки.

Почему 1С этого не сделает? Думаю, потому, что такой продукт значительно труднее монетизировать, особенно в условиях России.

То есть, по сути, 1С часто ухудшает характеристики продукта из-за ограничений по монетизации. Это не упрек, бизнес есть бизнес. Разработчики платформы тоже кушать хотят. Просто констатирую факты.

Да, хорошо читаемо. Обычный процедурный стиль с использованием готовых объектов. Язык простой, без изысков и заскоков. Все необходимое есть. Вот ООП, да, не хватает. Но компания 1С против)

Подготовительные шаги:

...

Можно сделать проще.

  1. Делаем проект в базис-мебельщик. Закупаем фурнитуру.

  2. Отсылаем файлик на производство (их очень много везде, ищем по "распил ЛДСП")

  3. Принимаем заказ и собираем (отверточная сборка).

Сделал так себе прихожую, планирую продолжить.

Но такого шарма, как с лакированной фанерой из статьи, конечно, не будет))

Если исключить из условий выбора "отсутствие подсветки", то база выбора сильно расширяется. Расширение базы выбора очень часто приводит к выбору более оптимальной модели, в том числе и по соотношению цена/качество. А подсветку отключить - это просто выдернуть разъем

Зачем указывать возраст в ТЗ?

Ну и столько внимания подсветке... Она отключается за несколько секунд на любом корпусе.

Выдачу НС обязательно нужно проверять. Бывают неточности, бывают галлюцинации. А ещё они отстают от реального мира на год, а то и два.

А локально запускать НС... Можно, но для того же дипсика нужно около 800 Гб памяти.

У меня никак в голове не могут соединится "топовая должность" и "программист". Наверное, "топовая должность" - это все же не разработка, а менеджмент. Это все же разные вещи

Знаю разработчиков-сеньоров без высшего образования вообще. Так же знаю людей с профильным образованием, из которых разработчики не получились. Я не то что бы против высшего образования, но заголовок статьи точно не соответствует содержанию.

А они по прежнему на вопрос "Как выгрузить таблицу значений 1С в JSON" выдают шикарные и удобные, но не существующие методы? :)

Статья неявно базируется на утверждении "LLM - это ИИ". Но это утверждении ложно...)

LLM - это просто алгоритм, который показал очень интересные результаты. Они, возможно, будут использоваться в AGI, но уж точно не как основа. Это всего лишь маленький кирпичик...

1
23 ...

Информация

В рейтинге
3 005-й
Откуда
Москва и Московская обл., Россия
Зарегистрирован
Активность