У меня есть вход, который является списком, и вывод является максимумом элементов input-list.
Может ли машинное обучение выучить такую функцию, которая всегда выбирает максимум входных элементов, присутствующих на входе?
Это может показаться довольно простым вопросом, но он может дать мне понимание того, что машинное обучение может делать в целом. Благодарность!
machine-learning
deep-learning
user78739
источник
источник
Ответы:
Возможно , но учтите, что это один из тех случаев, когда машинное обучение не является ответом . Существует тенденция пытаться использовать машинное обучение в тех случаях, когда действительно болотные стандартные решения, основанные на правилах, быстрее, проще и, как правило, являются правильным выбором: P
Редактировать : я первоначально написал это как «Да, но обратите внимание, что ...», но затем начал сомневаться в себе, никогда не видел, чтобы это было сделано. Я попробовал это сегодня днем, и это, безусловно, выполнимо:
Выход составляет 0,74576, поэтому он правильно находит максимум 74,5% времени. Я не сомневаюсь, что это можно улучшить, но, как я уже сказал, это не тот случай, который я бы порекомендовал для ML.
РЕДАКТИРОВАТЬ 2 : На самом деле я перезапустил это сегодня утром, используя sklearn RandomForestClassifier, и он работал значительно лучше:
И результат здесь составляет 94,4% выборок с правильно определенным максимумом, что довольно неплохо.
источник
@
, как в@Marco13
). Что касается вопроса: я думаю, что ваше утверждение «машинное обучение - это не ответ» дает понять. Я в основном боюсь, что слишком много людей не применяют надлежащую проверку при использовании ML / DL / NN, и особенно, когда они сталкиваются с чем-то, что выглядит так, как будто это может «решить их проблему», не понимая, почему это происходит и, таким образом, не распознавая, когда «решение» является только артефактом не очень хорошо понятого процесса.Да. Очень важно, что вы выбираете архитектуру решения для машинного обучения. Архитектуры и процедуры обучения не пишут сами; они должны быть спроектированы или составлены из шаблонов, и обучение следует как средство обнаружения параметризации архитектуры, подходящей для набора точек данных.
Вы можете построить очень простую архитектуру, которая на самом деле включает в себя максимальную функцию:
где а и б - изученные параметры.
При наличии достаточного количества обучающих образцов и разумной тренировочной программы эта очень простая архитектура очень быстро научится устанавливать a в 1 и b в ноль для вашей задачи.
Машинное обучение часто принимает форму развёртывания нескольких гипотез о параметризации и преобразовании точек входных данных и обучения сохранению только тех гипотез, которые связаны с целевой переменной. Гипотезы кодируются явно в архитектуре и подфункциях, доступных в параметризованном алгоритме, или в качестве предположений, закодированных в «беспараметрическом» алгоритме.
Например, выбор использования точечных произведений и нелинейностей, как это принято в ванильной нейронной сети ML, несколько произвольный; он выражает всеобъемлющую гипотезу о том, что функция может быть построена с использованием заранее определенной композиционной сетевой структуры линейных преобразований и пороговых функций. Различные параметризации этой сети воплощают разные гипотезы о том, какие линейные преобразования использовать. Можно использовать любой набор инструментов функций, и задача обучающегося машины состоит в том, чтобы с помощью дифференциации, проб и ошибок или другого повторяемого сигнала обнаружить, какие функции или функции в своем массиве лучше всего минимизируют показатель ошибки. В приведенном выше примере изученная сеть просто сводится к самой максимальной функции, тогда как недифференцированная сеть может альтернативно «изучить» минимальную функцию. Эти функции могут быть выражены или аппроксимированы другими способами, как в функции регрессии линейной или нейронной сети в другом ответе. В общем, это действительно зависит от того, какие функции или части LEGO есть в вашем наборе инструментов архитектуры ML.
источник
max()
(из помеченных данных). Они не сказали « Учитывая, что у вас уже естьmax()
строительный блок»Да - Машинное обучение может научиться находить максимум в списке чисел.
Вот простой пример обучения поиску индекса максимума:
источник
Алгоритмы обучения
Вместо того, чтобы изучать функцию как вычисление, выполняемое нейронной сетью с прямой связью, существует целая область исследования алгоритмов обучения на основе выборочных данных. Например, можно использовать что-то вроде машины нейронного тьюринга или какой-то другой метод, в котором выполнение алгоритма контролируется машинным обучением в точках принятия решения. Такие игрушечные алгоритмы, как поиск максимума, или сортировка списка, или реверсирование списка, или фильтрация списка, обычно используются в качестве примеров в исследовании алгоритмов обучения.
источник
Я исключу образованные проекты из моего ответа. Нет, это невозможно использовать готовый подход к машинному обучению (ML), чтобы полностью представить функцию максимума для произвольных списков с произвольной точностью. ML - это метод, основанный на данных, и ясно, что вы не сможете аппроксимировать функцию в регионах, где у вас нет точек данных. Следовательно, пространство возможных наблюдений (которое бесконечно) не может быть охвачено конечными наблюдениями.
Мои утверждения имеют теоретическое обоснование с помощью универсальной теоремы Кибеко для нейронных сетей. Я процитирую теорему из Википедии:
Если ваше пространство наблюдений компактно, вы можете аппроксимировать максимальную функцию с помощью конечного набора данных. Как показал ответ с самым высоким рейтингом, вы не должны изобретать велосипед!
источник
Вот расширение моего комментария. В предисловии, абсолютно верно @DanScally, что нет причин использовать ML для нахождения максимума списка. Но я думаю, что ваше «это может дать мне понимание того, что машинное обучение может сделать в целом», является достаточной причиной, чтобы вникнуть в это.
Наконец, для следующего вопроса: можем ли мы обучить NN в это состояние. @DanScally помог нам начать; может быть, знание теоретической архитектуры может помочь нам обмануть решение? (Обратите внимание, что если мы сможем выучить / аппроксимировать конкретный набор весов, приведенный выше, сеть фактически будет хорошо работать вне диапазона обучающих выборок.)
Блокнот в github / Colab
источник
Да, даже такое простое машинное обучение, как обычные линейные наименьшие квадраты, может сделать это, если вы используете некоторую прикладную смекалку.
(Но большинство сочло бы это довольно ужасным перебором).
(Я предполагаю, что мы хотим найти максимум абс входного вектора):
источник