?

Log in

No account? Create an account

Previous Entry | Next Entry

Неуклонный прогресс

Очень хорошая статья в «Атлантике» о Дугласе Хофштадтере (по-английски): «Человек, который учит машины думать». Вспомнил о ней в недавнем разговоре, думаю, надо поделиться, хоть она и четырехлетней давности.

Упоминается в ней анекдотом приписываемое П. Норвигу высказывание: «Исследователь ИИ подобен человеку, вознамерившемуся добраться до Луны, взбираясь по дереву. Он рапортует о неуклонном прогрессе всю дорогу вплоть до самой верхушки дерева».

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

Tags:

Comments

( 41 comments — Leave a comment )
combinator30
Mar. 17th, 2018 09:35 am (UTC)
Hofstadter wanted to ask: Why conquer a task if there’s no insight to be had from the victory? “Okay,” he says, “Deep Blue plays very good chess—so what? Does that tell you something about how we play chess? No.
=====================
Любопытно, что он думает на эту тему сегодня с учётом появления AlphaZero...

fregimus
Mar. 17th, 2018 10:50 am (UTC)
А в чем Вам видится принципиальное отличие?
combinator30
Mar. 17th, 2018 12:53 pm (UTC)
AlphaZero учится играть в разные игры сама, её оценка позиции гораздо ближе к той, которую дают профессиональные шахматисты, образы, которые при этом ею используются, в принципе, могут быть проанализированы и поняты человекам. Как-то так...
lenivtsyn
Mar. 17th, 2018 01:49 pm (UTC)
(Встречал где-то, цитирую по памяти:) Когда шахматист играет в шахматы с машиной, это не машина поднимается до уровня человека, это человек опускается до уровня счётной машины.
combinator30
Mar. 17th, 2018 02:50 pm (UTC)
Ещё бы понять, каким образом можно оценить этот "уровень", ну или хотя бы в каких единицах он измеряется...
(no subject) - lenivtsyn - Mar. 17th, 2018 05:48 pm (UTC) - Expand
(no subject) - combinator30 - Mar. 17th, 2018 07:14 pm (UTC) - Expand
(no subject) - technocrator - Mar. 18th, 2018 12:24 am (UTC) - Expand
(no subject) - fregimus - Mar. 18th, 2018 04:28 am (UTC) - Expand
fregimus
Mar. 17th, 2018 06:59 pm (UTC)
Может быть, тут что-то и есть. Многоуровневые (“deep”) нейронные сети работают непостижимо эффективно, и есть исследователи (Naftali Tishby, в первую голову), пытающиеся понять почему. Здесь все как-бы вывернулось: появился практический инструмент, который работает потрясающе хорошо, но не совсем понятно, почему именно он работает. Кстати, с лекарствами такая же колдовская ситуация примерно часто бывает: evidence-based medicine говорит, что это работает и лечит, а как именно, бывает узнают через много лет, а бывает и вовсе достоверно не узнают.

Но позволяет ли Альфа0 понять, что значит понимать, именно в том смысле, в каком говорит Х.? Мне кажется, что вот именно в этой части именно в его ключе он бы принципиально нового не увидел. Даже если мы построим, например, машину, моделирующую мозг и обладающую сознанием, разберемся ли мы, как именно она работает? Применяя заезженную аналогию, вот есть у меня на компьютере Мathematica, она может теоремы доказывать. Но не думаю, чтобы можно было понять, как именно она это делает, вооружившись вольтметром и осциллографом и созерцая разные сигналы в процессоре и памяти. А здесь столько промежуточных сущностей — регистры, ALU, инструкции, хранящиеся в коде, над ними примитивы, вычисляющие, например, логарифм, над ними ассемблерная программа, полученная абстрактным преобразованием уже более понятной программы на языке высокого уровня (а ее там и следы только остались, ее там, внутри, нет в восстановимом виде!), а над этим еще примитивы самой Математики, на которых уже реализован собственно решатель теорем.

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

Вроде бы ясно, что язык этот должен быть не редукционным, а эмергентным, но это не та модальность мышления, в которой себя можно чувствовать комфортно, да и не получается пока ничего, кроме, в общем-то, мычания и помавания руками. Я не против двигаться к Луне вместе с растущим деревом, но меня (как и Х.) не оставляет ощущение, что придется все-таки с него слезать и строить лунолет. Дерево точно не дорастет. Он вот и строит, пусть из желудей и шишек, но это, мне кажется, правильный и вызывающий глубокое уважение подход. Хоть и не особо популярный.
combinator30
Mar. 17th, 2018 08:19 pm (UTC)
По поводу "не совсем понятно, почему именно он работает" - на мой взгляд, по крайней мере, для свёрточных сетей есть некое понимание, как и почему это работает. По сути, свёрточные сети шаг за шагом строят иерархию абстракций (инвариантов), начиная от самого низкого уровня, забираясь всё выше и выше. И это в чём-то напоминает развитие любой эволюционирующей системы от зрительной системы лягушки до истории развития науки, скажем, по теории метасистемных переходов Турчина. Что, конечно, отнюдь не отменяет необходимость попыток параллельно строить лунолёт. Чем большим количеством способов мы пытаемся решить задачу, тем больше в итоге шансов на успех.
misha_b
Mar. 17th, 2018 03:30 pm (UTC)
Более правильной параллелью мне кажется поднимающася вода. Она может затопить равнины коммерческих приложений, но добраться то гор гораздо труднее.
anhinga_anhinga
Mar. 17th, 2018 10:53 pm (UTC)
Да, это похоже на правду.

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

Другими словами, можно ли, пользуясь теперешними методами добраться до состояния, когда искусственные системы начнут полноценно участвовать в попытке "понять понимание" (задача "понять понимание", возможно, нам самим не по зубам, но, быть может, мы можем сделать системы, во взаимодействии с которыми её можно будет решить)... Оптимистичный взгляд на предмет, видимо, отражен здесь: https://arxiv.org/abs/1711.08378 (A DeepMind paper, "Building Machines that Learn and Think for Themselves: Commentary on Lake et al., Behavioral and Brain Sciences, 2017")...
misha_b
Mar. 18th, 2018 02:57 am (UTC)
The current methods are based on functional approximation techniques and are not very different from what we had 20 years ago. Most of the advances are in optimization (using stochastic gradient descent) and in the technology (GPU). I am not sure about the value of very deep networks. In fact, we see that for many non-vision related problems classical methods (kernels) are very competitive, if optimized properly (using new techniques, including SGD) on large data.

I am skeptical that there is enough water in these methods to cover the mountains. Self-driving is a relatively easy problem, given large data. Programming requires communication skills and a lot more.
fregimus
Mar. 18th, 2018 04:44 am (UTC)
Здесь определенный прогресс все же есть, все свалить на более мощное железо было бы не совсем верным. В прикладном плане есть несколько изобретений (ну не открытиями же их называть, в конце концов!): DBN, dropout, RBM; из последнего CTC; оживление старых идей, в первую очередь LSTM, решает проблему исчезающих градиентов — это действительно за счет увеличения вычислительной мощности, позволившего достать их из стола. Скомбинируйте LSTM и CTC, чтобы решать задачи seq2seq, и получается машпер лучше прежнего.

Но это все технологии, фундаментального знания это не прибавляет, конечно, тут Х. прав.

Edited at 2018-03-18 04:46 am (UTC)
misha_b
Mar. 18th, 2018 02:41 pm (UTC)
I mostly agree. Things like dropout are local improvements, not clear that there is anything fundamental there, even from the optimization point of view.

A more fundamental innovation in my view is systematic over-parametrization -- the number of parameters consistently exceeds the number of data points by a large margin. (It is also not new, strictly speaking). In any case, some of these things are real innovations in computing/optimization but their connection to AI is not clear.


systematic over-parametrization - ny_quant - Mar. 18th, 2018 07:56 pm (UTC) - Expand
Re: systematic over-parametrization - misha_b - Mar. 18th, 2018 08:26 pm (UTC) - Expand
Re: systematic over-parametrization - ny_quant - Mar. 18th, 2018 09:53 pm (UTC) - Expand
Re: systematic over-parametrization - misha_b - Mar. 18th, 2018 11:11 pm (UTC) - Expand
Re: systematic over-parametrization - ny_quant - Mar. 19th, 2018 11:35 pm (UTC) - Expand
Re: systematic over-parametrization - misha_b - Mar. 19th, 2018 11:55 pm (UTC) - Expand
Re: systematic over-parametrization - ny_quant - Mar. 20th, 2018 12:25 am (UTC) - Expand
Re: systematic over-parametrization - misha_b - Mar. 20th, 2018 12:43 am (UTC) - Expand
Re: systematic over-parametrization - ny_quant - Mar. 20th, 2018 02:27 pm (UTC) - Expand
Re: systematic over-parametrization - misha_b - Mar. 20th, 2018 03:33 pm (UTC) - Expand
anhinga_anhinga
Mar. 18th, 2018 04:45 am (UTC)
There seem to be a big variety these days, in some sense, almost more than one person can cover (such a large exploding field, difficult to describe all of the aspects of what's going on).

I am not sure whether the notion of function approximation is all that helpful to understand even the simplest applications of recurrent networks (e.g. in the style of Karpathy's "The unreasonable effectiveness of recurrent neural networks"). Yes, in some sense, 20 years ago was when first such networks were "correctly structured" (LSTMs), which was the crucial breakthrough (before that they just did not want to train well at all because of "vanishing gradients")... The truly deep non-recurrent networks were only recently fixed to efficiently work in that style (I don't know what took so long; so many things which should have been noticed long ago are only recently becoming known; I mean, even AlphaZero should have been discovered 20 years ago, it's such a simple elegant schema, which is not too computationally demanding in many cases)...

I am also not sure whether reinforcement learning (which "does not quite work yet most of the time", but when it does, it's rather spectacular) should be understood via function approximation.

Then probabilistic programming is changing quite rapidly lately (and also does not sound to me like function approximation).

Then there are all these gradual understandings of better regularization schemas, and of "synthetic gradients", - all quite non-trivial and representing important progress.

Then the breakthroughs in non-gradient-based methods, from the flavor of "evolution strategies" introduced by OpenAI last year, to recent progress on doing straightforward genetic computation in that style (in particular from Uber AI Labs, this December).

Then all the nice results in transfer learning, in learning to learn (in particular, in making systems capable of more or less one-shot learning in some domains, or at least learning with very few data examples). Perhaps, eventually these will be understood via function approximation, but I don't think there is much progress towards such understanding yet :-)

Certainly, this does not mean one has to be sure of "success" in the sense we are talking about. But I think it's difficult to even know the whole field enough these days for confident negative pronouncements.

*****

Now, program synthesis is still miserable as far as I know - on the positive side, there is a great diversity of approaches, more and more people trying new different things in this sense, and some rather spectacular limited breakthroughs. But nothing seems to be close to truly working for program synthesis yet...

I am trying to play with "recurrent networks with vector flows" myself (unlike standard recurrent nets, which are formally Turing complete, but not practically usable for programming, as soon as one moves from scalar flows to vector flows, then one can suddenly program in the resulting neural nets, and can actually make them self-modifiable in a practical sense, while still being able to continuously deform them)... I don't think people are playing with those much (alas), so it's difficult to say, whether this will be the road for program synthesis...

But I see people trying new things all the time for program synthesis or program induction - certainly, some sort of communication is required for this task (but perfect language understanding is not; some existing approaches include natural language dialogs and hints, some use communications not based on natural language)... Very difficult to predict the timeline on this one...
misha_b
Mar. 18th, 2018 03:00 pm (UTC)
Yes, the variety is large (too large?) -- it is impossible to know what is happening and what is real and what is not. There are too many exaggerated claims/poorly substantiated claims.
Ali Rahimi gave a nice talk at NIPS about that.
I certainly cannot follow all of the developments in deep learning -- non-gradient descent based methods sound interesting, although I wonder if they are some type of ensemble classifiers/random forests which can also be optimized without gradient descent.

Still, the basic setting for most applications is the same -- we are given pairs (x_i,y_i) of training data points and need to reconstruct a function that performs well on unseen data.
To my mind, the key finding has been that using a large number of parameters/over-fitting does not hurt generalization but helps optimization. This is extremely counter-intuitive (although not, strictly speaking, new). We've just written a paper showing that the same holds for kernel methods (which can be viewed as 2-layer neural nets).

My prediction is that in 2-3 years some of the smoke will clear and we will have a much more clear practical/theoretical understanding of what works and what does not.

(no subject) - anhinga_anhinga - Mar. 18th, 2018 06:36 pm (UTC) - Expand
(no subject) - misha_b - Mar. 18th, 2018 06:57 pm (UTC) - Expand
(no subject) - anhinga_anhinga - Mar. 18th, 2018 08:05 pm (UTC) - Expand
(no subject) - misha_b - Mar. 18th, 2018 08:34 pm (UTC) - Expand
(no subject) - anhinga_anhinga - Mar. 18th, 2018 06:45 pm (UTC) - Expand
(no subject) - misha_b - Mar. 18th, 2018 06:52 pm (UTC) - Expand
(no subject) - akor168 - Mar. 20th, 2018 08:07 pm (UTC) - Expand
(no subject) - misha_b - Mar. 20th, 2018 08:53 pm (UTC) - Expand
(no subject) - akor168 - Apr. 1st, 2018 08:42 am (UTC) - Expand
(no subject) - misha_b - Apr. 1st, 2018 05:32 pm (UTC) - Expand
(no subject) - akor168 - Apr. 2nd, 2018 08:44 pm (UTC) - Expand
(no subject) - misha_b - Apr. 3rd, 2018 12:49 pm (UTC) - Expand
livejournal
Mar. 17th, 2018 06:58 pm (UTC)
Искусственный интеллект
( 41 comments — Leave a comment )