ailev.ru

Обсуждение

В архиве: 12 комментариев.

Читать и комментировать в ЖЖ ↗

avlasov · 9 апреля 2019

Комментарий

Важное замечание от Rich Sutton, что весь прогресс в AI в конечном итоге определяется грубой вычислительной силой, а не хитрой алгоритмикой У него не так написано все же "We have to learn the bitter lesson that building in how we think we think does not work in the long run." Я бы сказал так - in the short term оно все равно актуально. Особливо если мы говорим об инженерии, а не о науке. К примеру, в работе с текстами простые рабоче-крестьянские TFIDF+линейная модель+опционально ngrams работают очень даже не плохо, и не факт что хитроприготовленная нейросетка их существенно победит. Да, оно наверняка победит, но может это будет доля процента точности. Далеко не всегда это будет стоить возни с нейросетками. Далее, можно рассмотреть low-rank factorization/embeddings - всякие там word2vec/fastText/starSpace и подобные модели, т.е. некоторое усложнение линейной модели, можно сказать - специализированную двухслойную нейросетку. Поскольку они специализированные, то и алгоритм обучения заточен под это дело и шустро работает без GPU. Опять же не всякая нейросетка более сложной конструкции это победит без существенных затрат ресурсов. Хотя сейчас вроде научились нейросетки на тексте обучать, т.е. допустим победит. Но не факт что выигрыш будет стоить бОльших затрат ресурсов в случае нейросетки более общего вида. Хотя in the long run конечно же нейросетки потихоньку и текст наверное захватят, но очень сомневаюсь что окончательно. Т.е. например если речь идет о работе с сотней моделей одновременно, то все равно будет проще, если это будет сто линейных моделей. Нежели сто LSTM/GRU нейросеток. Хотя если сперва будет идти один слой из LSTM фич, а потом сто линейных моделей - то почему бы и нет? Чуть чуть обобщив - допустим мы делаем усреднение кучи моделей (например, после ресемплирования датасета по разным причинам, начиная от строительства ансамбля или какой-нить редукцией). Усреднять линейные модели всяко сподручнее нейросеток. Хотя, опять-таки, если сперва идут общие нейросетевые фичи, а потом сотенка линейных моделей - то почему нет? Или взять к примеру Netflix приз - там для получения крутого результата важную роль играли нейросетки - для blending'а результатов работы простых моделей. Но на практике-то это слишком тяжеловесно! Хотя для победы в соревновании и необходимо. Но вот когда мы смотрим на модели, чьи результаты ансамблировались, то там сплошь и рядом кастомные версии достаточно простых моделей - факторизация матриц (SVD++, timeSVD++ etc) и RBM (которая есть по сути нелинейность поверх той же самой факторизации). Или возьмем случай когда у нас действительно очень много всяких данных - ну там десятки/сотни мильенов примеров, и кол-во фич некислое (допустим мы интеракции их тоже берем). Нейросетками тут можно замучиться. Даже линейными методами можно замучиться. Чисто в силу объема данных. Грубо говоря, современные линейные модели МЛ обучаются за линейное время от кол-ва фич (ненулевых элементов в дизайн матрице). Т.е. трудно придумать более быстрый алгоритм, ибо надо же хотя бы по разу предъявить ненулевые фичи (иногда можно и не предъявлять, если датасет избыточный, но все же). И с линейными моделями можно как-то пытаться исхитряться. Хотя наверное потом придут нейросеточники и придумают как те же методы адаптировать для нейросетей. Или запараллелить на 1000 GPU. В заключении, я бы сказал что я лично прогресс вижу в хитрой алгоритмике, но потом железо подтягивается, нейросеточники подтягиваются, потом это дело до фреймворков доходит. И кагбэ может уже да, смысла нет в хитрой алгоритмике, ибо дешевое железо и хитрая алгоритмика другого рода (как ловко обучать нейросетки) делает так что проще стандартными решениями действовать.

avlasov · 9 апреля 2019

Комментарий

Вобщем с точки зрения инженерии, я не вижу ни горькости урока, ни противоречия между брутфорсным и human-knowledge подходом. Точнее в short term может и есть противоречие, а вот in the long run вовсе даже и нету :). И мне лично не горько :). Ибо в short term мы решали текущие задачи (которые все равно надо решать), а in the long run созревают более общие методы, железяка ускоряется в стопиццот тыщ раз, и мы уже решаем текущие задачи новыми методами, дорабатываем их напильнегом под особенности текущих задач, от чего они конечно же становятся менее общими.

Ответ на комментарий

Анатолий Левенчук · 9 апреля 2019

Комментарий

Вот я было начал писать про no free lunch theorem (и там в посте примерно такие же соображения, плюс выход на тезис об универсальной хардверной архитектуре для экспериментов с этим всем), но перестал -- решил, что топик этого поста про search и learning как таковые, и просто дикие вычислительные ресурсы и неспешливость в них из-за этого. И что все разными алгоритмами, но именно этим заняты. Значит, нужно в инженерии тоже таким языком начинать говорить.

Ответ на комментарий

Анатолий Левенчук · 9 апреля 2019

Комментарий

Предпринимательство основано на том, что люди имеют разные межвременные предпочтения -- в том числе и по поводу принятия рисков. Некоторые готовы синицу в руках задорого, некоторые готовы журавля в небе, но задёшево. И каждый надеется выиграть. Кто-то надеется, что именно его short run окажется общим long run ))) Но обычно -- нет )))

Ответ на комментарий

greygreengo · 10 апреля 2019

Комментарий

Статистика запросов к поисковым серверам таки говорит, что если ИИ не начнет формировать собственные запросы, то деградирует вслед за поколением пальцетыков.

avlasov · 10 апреля 2019

Комментарий

У меня недавно был кейс в котором тесно переплетались human-knowledge-based, search, long term и short run :). Я консультировал одну компанию по поводу МЛ, там задача была в обработке сигналов, и там было много физики, так что ребята делали все упорно через human-knowledge, но результат их не устраивал. Я сразу подумал что конволюционная нейросетка туда хорошо ложиться, тем не менее мы последовали по некоторому промежуточному пути, а именно некий систематический поиск решения в пространстве, которое было где-то посередине между knowledge-based и нейросеткой. По причине высоких затрат (не только вычислительных) на проект с нейросеткой, там целый список затрат был, которые на первых порах были нежелательны по обоюдному согласию. Хотя in the long run нейросетка рано или поздно была бы актуальнее. Но мое видение было в том, чтобы подвести к этому решению через промежуточный поиск среди моделей попроще - и ближе к human-based, но так чтобы потом сподручнее перейти к более сложным архитектурам, включая CNN. Т.е. в целом сей кейс лично для меня укладывается в канву Rich Sutton'а, с тем замечанием, что short term все равно актуален. Да, если мы можем жахнуть general методом пусть и с высокими вычислительными затратами - это хорошо. Но не всегда можем :). В то же время отмечу, что систематический поиск решения там был основой подхода. И мне в этом видится куча бенефитов, с точки зрения инженерии, с точки зрения балансировки между различными ограничениями. В частности, мы можем разделить задачу на кусочки, которые могут выполнять не особо квалицифированные специалисты. В то же время, эти задачи есть и "повод" подучить их, и в любом случае, по мере реализации, они получат опыт и повысят квалификацию. Т.е. тут у нас есть масштабирование не только на компьютерные выч мощности, но и на человеческие ресурсы тоже. В целом поисковый подход наверное можно так описать - мы декомпозируем целевую задачу на подзадачи. Для каждого этапа находим какие-то простые варианты решений (возможно тоже их декомпозируем), учитываем ограничения, ну и генерим какие-то наборы сочетания этих вариантов, которые составляют решение основной задачи. В целом чтобы это проделать, нужна высокая квалификация, но вот отдельные задачи могут делать ребята и не шибко подкованные в МЛ, особливо, если им пояснить, что к чему. Декомпозиция инженерам очень понятна, но видимо им не вполне понятен подход, что взяв кучу вариантов решения подзадач, мы из всего этого можем организовать систематический поиск решения. Который может и тупой, но кагбэ вполне работает, ежели "выч мощностей" хватает.

Ответ на комментарий

fractaler · 10 апреля 2019

Комментарий

"Мы занимаемся изучением/исследованием/выучиванием окружающего мира, наука=learning. А в инженерии мы ищем/search решения" Есть реальность, есть её модель ("карта", "модель мира"). Одни эту модель/картину мира "строят", другие её используют (осуществляют "навигацию" по карте). Одни генерят мутации для "исследования" реальности, другие сохраняют наиболее правильные (+ другие, на всякий). Одни идут проверять новые объекты (приманки, ситуации и т.д.), другие ждут, что произойдёт и потом принимают решение что делать. Такое разделение было есть и, скорее всего, будет.

avlasov · 10 апреля 2019

Комментарий

Есть еще всякие варианты скрещивания learn и search типа Learning to search Я лично рассматриваю как базовый паттерн такую иерархию понятий: learn - это (очень часто) optimization, а optimization - это search (можно считать что всегда). Я бы сказал, что инженерия скорее занимаеццо оптимизацией: если у нас есть инженерное воображение и инженерный фкус, то добавив сюда инженерный поиск, получаем инженерную оптимизацию. Хотя тут можно сказать и learn тоже - ибо получив какой-то экспириенс конструирования/оптимизации, мы умеем какие-то задачи делать лучше чем раньше. Но мне думается что в инженерии основное - это оптимизация (с учетом всеразличных ограничений). Т.е. генерируем варианты и модифицируем их в поисках чего-то лучшего (лучше подходящего под требования). Я сейчас занимаюсь инженерией МЛ, в том смысле, что разрабатываю методику/технологию решения МЛ задач (в контексте технологии/методики реализации МЛ проектов). Ну и там паттерн learn-optimize-search постоянно на разных уровнях встречается, что намекает нам, что можно туда приплетать опыт из других сфер (и генерить огромное пространство поиска, которое замучаешься перебирать :)). Само определение МЛ Tom'а Mitchell'а (... performance at tasks in T, as measured by P, improves with experience E) намекает нам что ML есть оптимизация. Ну и обычно как только мы добавляем пространство поиска (в моей технологии - конструируем его), то получаем оптимизационную задачу. Которую обычно решают поисковым алгоритмом (например, градиентным спуском, т.е. перемещаемся в этом пространстве, делая шаги в направлении обратном градиенту). Конечно, на практике посложнее, ибо мы хотим не просто оптимум целевой функции, а чтобы решение генерализовалось, что мы тестируем на валидационном наборе (метрика), ну и генерим обычно кучу моделей (процесс управляемый через пространство гиперпараметров), ну и вобщем выбираем лучшую модель с точки зрения генерализации. Т.е. опять-таки learn получается как оптимизация посредством поиска. При строительстве ансамблей картина та же самая, только мы модели не выкидывам, и генерим их немного по другому, но в общем, там тот же поиск и оптимизация. Байес сюда тоже можно запихнуть, хотя это может получиццо и натянуто, хотя в случае Variational Bayes достаточно прямолинейно возникает оптимизационная задача. Далее, применение модели (инференс) может проходить в форме оптимизации (и поиска), при этом пространство поиска может быть даже и некислым, так что приходится применять упрощенные методы (как это бывает в structured prediction, всякие там CRF, MRF и проч). В самом простом случае - мультиклассификация, у нас есть несколько классов, допустим у каждого есть вектор-прототип, ну и мы смотрим к кому из них пример ближе. Это ведь тоже оптимизация и поиск. А если кол-во классов очень большое, то тут сразу возникает дерево поиска, ибо там уже у нас log k, вместо k операций. Регрессию тоже можно рассмотреть как оптимизацию - ибо нас обычно интересует mean или median в качестве точечного прогноза по модели. Ну и эту примитивную оптимизацию можно обобщить (квантильная регрессия к примеру). Вобщем, подводя итоги, рассматривать МЛ с точки зрения оптимизации/поиска очень удобно в инженерных целях, ибо это применимо сразу на нескольких уровнях: 1 генерация и поиск моделей (часто даже 2-3 уровня: конструирование пространств поиска, перебор разных методов МЛ и поиск гипер-параметров в рамках конкретного метода, еще 1-2 уровня с добавлением ансамблей). 2 оценка параметров (model fit) 3 инференс часто удобно задавать как optimization задачу (и решать явным поиском в сложных случаях) Удобно в инженерных целях ибо можно сюда приплести алгоритмы поиска/оптимизации из других сфер.

nashev · 10 апреля 2019

Комментарий

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

Анатолий Левенчук · 10 апреля 2019

Комментарий

Удивительно, но когда пишут AI -- то сравнивают после этого не с "человеком", а "человечеством" (причём как-то удивительным образом организованном, где возможности -- это объёдинённые способности всех людей, включая немногих планетных гениев). Вот как подмена человека на человечество происходит и отдельного ИскИна на "Искинечество" но при этом продолжается разговор про индивиды -- это загадка. Из разговора в разговор. "Человек же может симфонию писать и интегралы брать". Нет, не человек, а разные люди -- но вот это почему-то игнорируется, что разные люди. Тип/множество и индивид оказываются неразличимы. Беда.

greygreengo · 10 апреля 2019

Комментарий

Видимо, гений, применительно к ИИ есть сильно переобученная система, т.е. сильно заметное отклонение от среднего, которое эту систему тестирует. А значит, хотя бы из того же принципа Ле-Шателье-Брауна, должно быть отброшено, чтобы не уводить систему из термодинамического равновесия в неустойчивые области. ЗЫ Поэтому гениев так сильно бьют в детстве. Хотя, как оказывается, то за то что их бьют, впоследствии становится "маленьким шагом одного человека и гигантским шагом человечества".

chumakin · 11 апреля 2019

Комментарий

про " весь прогресс в AI в конечном итоге определяется грубой вычислительной силой, а не хитрой алгоритмикой" значит, что мир скорее деятельностный, как утверждает смдм, а не слабая копия моего воображения (ок, интеллекта). И сколько лет ушло у Rich Sutton, чтобы прийти к такому открытию? Интересно, сколько лет уйдет у них, чтобы дотумкать до категориально-понятийного анализа своих действий, программ, задач и т.п.? Даже старый добрый, хорошо известный на западе ТРИЗ ушел в анализе-синтезе своих действий гораздо дальше, чем единомышленники Rich Sutton.