Pull to refresh

Comments 22

Эта нейросеть всего лишь скоррелировала на 31.08% поданное изображение с изображением "какого-то трактора" в обучающей выборке. Видимо, кружок указанного размера заметно отличает этот образ в обучающей выборке от остальных изображений этой же обучающей выборки.

К сожалению, только в прошлое...

Я так понимаю, человек сделал распозновалку рукописного алфавита - его программа может распознавать конечное число заранее определенных нарисованных литер [кошка, трактор, велосипед, ...] акуратно введенных в нужное поле. Такие задачи ещё в советские времена инженерами в НИИ на больших ламповых ЭВМ успешно решались, и даже без ЭВМ в целях удешевления - на конечных автоматах, собранных на рассыпухе. См. Бонгард М.М. "Проблема узнавания" Москва Наука 1967г.

Только инженеры НИИ не знали, что на этом можно хайпожорить и миллионы подписчиков собирать, поэтому жили на скромную зарплату в 120 рублей.

Всё они прекрасно знали, просто считали ниже своего достоинства снисходить до какого-то быдла, которое всё равно ничего не понимает в науке.
Отношение советских учёных к пиарщикам и хайпожорам очень хорошо показано в произведении Стругацких «Понедельник начинается в субботу». Один из персонажей повести, профессор Выбегалло, за счёт пиара и хайпа сделал себе имя на крайне низкопробных исследованиях, уровня карикатурных «британских учёных». И что же? Хоть кто-нибудь взял его опыт на заметку? Хоть кому-то из этих магов пришла в голову идея распиарить и свои эксперименты тоже? Или хоть кому-то пришла в голову идея сделать этого Выбегалло главным пиарщиком всего НИИЧАВО, чтобы он писал научно-популярные статьи и книги, выпускал начно-популярный журнал о волшебстве и проблемах волшебной науки?
Разумеется нет — наоборот, они ещё и гордились тем, что настоящая наука скучна и непонятна простым смертным, и всячески презирали тех, кто злоупотребляет контактами с прессой.
Ну вот если сидеть в башне из слоновой кости, упиваясь собственным превосходством над «тупым быдлом», то обыватель рано или поздно задастся вопросом: а чем они там вообще занимаются? За что мы им вообще платим? Может, 120 руб — это даже много?
Нейронные сети сейчас популярны потому, что там не нужно вникать в матчасть. «Аппроксимация», «свёртка», «корреляция», «обратная свёртка», «преобразование Фурье/Радона/etc» — эти слова я давно уже не видел в статьях о распознавании образов. Зато «миллионы изображений в датасете», «миллиарды параметров», «тысячи видеокарто-месяцев для обучения» — из каждого утюга.

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

Как я и говорил, в матчасть вникать никому не интересно. Суммирование значений нейронов помноженных на веса — это и есть свёртка, а слово «свёрточная» лишь определяет определенный класс нейросетей по архитектуре. Но лучше вам об этом расскажут авторы курса.

Да уж, ясно. Свертка если совсем по простому это линейный фильтр, а умножение весов, это скалярное произведение(dot product) двух векторов. Понимаете в чем разница? Свертку можно реализовать через повторяющееся скалярное произведение, но скалярное произведение не является сверткой.

Свёртка, если не по простому, а по правильному — это интегральное преобразование над двумя функциями, дающее в результате третью. В дискретном пространстве, соответственно, интеграл превращается в сумму, и если в искомой функции нас интересуют не все её значения, а только в одной точке — соответственно и все другие значения считать не обязательно.

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

Не ну вы серьезно хотите меня убедить, что скалярное произведение векторов надо называть сверткой выродившейся в одну точку?

Классическая нейросеть это как раз и есть последовательность скалярных произведений на которых действует нелинейность.

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

Я не хочу вас ни в чём убеждать. Математически распознавание по шаблону осуществляется через свёртку, через неё же всё строго обосновывается. Вырождение очевидно происходит потому, что идеальная корреляция даёт дельта-функцию Дирака. А вот каким образом получается распознавать образы через скалярное умножение — уже не так очевидно. Как оно вам поможет улучшить качество распознавания при недостатке обучающего материала неочевидно тоже.

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

>Вырождение очевидно происходит потому, что идеальная корреляция >даёт дельта-функцию Дирака.

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

PS: поискал немного по теме, кросс-корреляция является оптимальной линейной оценкой относительно аддитивного белого гауссова шума, это единственная фундаментальная причина почему ее стоит использовать.

Вот пример функции, автокорреляция которой даст единичный импульс:
Вариация ЛЧМ

Так получилось не случайно, а потому что её спектр константен по амплитуде. Для всех прочих сигналов нужно просто обратить амплитуду в спектре, чтобы получить схожий результат. Аргумент функции коллеляции — это время, и в единицу времени она также имеет единственное значение, если этот момент вас смущает.

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

Ну вот нейросеть и подбирает «какие-то функции» через процесс обучения. А без обучения «какие-то функции» не подбираются, а вычисляются.

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

Я в сетях не очень и по тому что читал сложилось впечатление

для большинства тех кто ими занимается это черный ящик. Наобучали на комбинировали получили результат и счастливы

Ну вот оказывается что есть специалисты с более глубоким понимаем процесса
Спасибо

«Аппроксимация», «свёртка», «корреляция», «обратная свёртка», «преобразование Фурье/Радона/etc» — эти слова я давно уже не видел

Учту это при отборе материала. В матчасть, конечно, вникать нужно — и нужно это как воздух. Иначе от слов Data Scientist останется одно Data. Поэтому у нас есть, как минимум, курс «Математика для Data Science» — это часть полного курса по Data Science. Цитирую:

«Чтобы уверенно решать не типовые задачи и создавать собственные архитектуры, мало владеть основными методами машинного обучения и нейронных сетей: важно понимать законы математики и статистики у них «под капотом».

По-хорошему, на мой взгляд, каждая модель от Data Scientist должна представлять собой некую малую (или крупную) научную работу в прикладной области, чтобы научными методами решить конкретную задачу или проблему.

А я что-нибудь другое сразу нарисовал бы, распознает? :)

Sign up to leave a comment.