Обновить
4
0

Пользователь

Отправить сообщение
2/3 мировой электроники так делается, вас это, почему-то не смущает.

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

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

Так что объективно, если без налёта русофобии и самоуничижения — это хорошая новость.
Кенгуру получается потому что у алгоритма нет достаточной информации об окружающей реальности чтобы двигаться не только неуправляемыми прыжками. Насекомые многие передвигаются именно так и ровно по той же причине.
А почему кстати? Нейронная сеть работает, скурпулёзно логирует первую производную по синапсу, усредённённую за большое количество тестов, после чего изредка отсылает гигабайты производителю, на производительском суперкомпьютере отрабатывает сложная методика обучения и отдаёт обратно готовую сеть. А локальный процессор умеет, грубо говоря, только Бак пропригейшен, для того чтобы лишь чуть-чуть доводить загруженную сеть на месте. На самом деле будет даже смешно, если локальный алгоритм будет плохой и вести к деградации и переобучению сети. тогда потребитель окажется в зависимости от регулярного обновления от серверов хозяина.

Помоему очень годная бизнес-модель, к тому же позволяющая скрывать от потребителей тонкости сложных алгоритмов.
Существует более общая формулировка задачи, позволяющая добиться того же самого. Функция активации может содержать в себе параметры, которые сами по себе являются обучаемыми. Плюс единичный вход — частный случай. Бывают и более интересные.

Моя трактовка такая. При отсутствии константы решение некоторых частных подзадач, встающих перед сетью, может оказаться чрезмерно сложным, для этого требуется очень специальная комбинация весов нейронов, на которую сети трудно, а в некоторых случаях невозможно, наткнуться самостоятельно. В данном случае это область похожих ненулевых ответов в окрестности нулевой точки. Но характер «неудобной» задачи, и способ с помощью которого задачу можно сделать удобной для сети, могут различаться.
Жаль самсунга?
Кстати, а как вы для себя формулируете это назначение?
Интересно сравнить. Значение как я его понимаю я описал в своей прошлой статье, там, где описывается понятие «Удобство представления».
Ну просто через эту идею проглядывает более общая задача, я её буду решать позже, сейчас меня в первую очередь интересовало как сделать, чтобы результат дальнейших улучшений сети был хорошо виден.
Без дополнительного входа. Тоесть взять сеть, грубо говоря, из википедии, и дать ей такую задачу она не сможет с ней справиться вне зависимости от количества нейронов и слоёв. Лично для меня это было интересным и не очевидным открытием, показывающим, что симметризация задачи может породить больше проблем, чем решить.
Не ту картинку подцепил на сеть с дополнительным входом без центрирования координат:
Спасибо на добром слове. :) В этом проекте я совмещал приятное с полезным. Полезная цель была выучить новый язык С#, на котором я никогда раньше не писал. Да и ИНС я раньше не занимался на уровне кода. Однако мнение о бесполезности поста, я надеюсь, несколько преувеличено.
Подробнее смотрите мой ответ zz_wolf-у в самом низу.
Огромное спасибо за ссылки,
Полезно будет знакомиться не со всем подряд, а с тем, что нужно. Отдельное спасибо за упоминание сопряжённых градиентов. А то я тут уже переоткрыл подобный метод и как раз начинал его писать.

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

И центрирование выборки тоже всего лишь слабое подобие. Я для иллюстрации взял задачу, которая строго отцентрована. Значения сдвинуты на 0.5 так чтобы точка (0,0) оказывалась строго в центре экрана, кроме того значение функции в центре экрана, в точке (0,0) равно 0, а площадь над кривой и под кривой одинаковы. Таким образом вероятность появления обучающих примеров на +1 и -1 одинаковы. В общем отцентровал всё идеально. Получилась вот такая задачка и её решение сетью с дополнительным входом:

Вот так выглядит решение задачи сетью с дополнительным входом, когда площади над и под кривой равны, но координаты не сдвинуты, область входных значений (0,1):

А теперь отключим дополнительный вход, и посмотрим как себя поведёт обычная сеть. На нецентрованных данных предсказуемо картинка заваливается в направлении особой точки, тоесть влево:

А вот если данные отцентровать получается самое интересное:

Сеть попадает в тупик и не может решить задачу. Специально 5 раз прогнал.

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

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

Если вдруг у вас под рукой есть сеть с более качественным алгоритмом обучения вы сможете сравнить его успехи с моими. Результат может быть парадоксальным образом не такой уж хороший. Если сделаете это — поделитесь со мной картинкой, буду благодарен.
Область входных значений для графика (0,1)
График: = |c-|k*(x-b)||+d
func = (point, envirement) => Math.Abs(envirement[2]-Math.Abs(envirement[0]*(point[0]-envirement[1])))+envirement[3]
Константы, при которых задаяча отцентрирована:
envirement[1] = 0.5
envirement[2] = SQRT(1/8) = 0.35355339
envirement[3] = 1/(4+2*SQRT(2)) = 0.1464466
envirement[0] = SQRT(1/8)/envirement[3] = 2.41421371744

Значения сдвигаются на 0,5 чтобы входные данные тоже были центрированы:
                    Convertion = (double[] input, double value) => {
                        NeuralTask result = new NeuralTask() {
                            input = new double[]{input[0]-0.5, input[1]-0.5},
                            output = new double[1] { Math.Sign(input[1] - value) }
                        };
                        result.preview = new double[3] { input[0], input[1], result.output[0]};
                        return result;
                    }

Сеть, как и в прошлый раз, три слоя по 15 нейронов.

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность