Pull to refresh

Comments 131

Спасибо, что продолжаете писать. Я не знаю, не сколько верны ваши статьи, ибо не имею понятия об ИИ, но кроме вас никто больше ничего столь же интересного и легкодоступного тут не пишет. Продолжайте в том же духе, очень интересно
Спасибо за ваши слова, они мне важны.
Ваша фраза «не знаю, насколько верно, но интересно и легкодоступно» очень точно описывает среднестатистическое отношение к среднестатистической статье tac от человека, который не понимает в предмете (те, кто в предмете понимают, относятся к ним существенно иначе, но это мелочи).

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

И другой немаловажный фактор — пока кроме этой серии на хабре нет ничего, столь же простого и понятного.
Вас не смущает тот факт, что «легкое для понимания» знание, которое вы получаете из этой статьи, может быть неверным?
Безусловно, может быть, но на верные, правильные статьи я просто не готов тратить столько своего времени. В представлении tac есть неточности и ошибки? Ок, хорошо, если мне в общем тема понравится — пойду копать глубже, читать научные статьи и учебники, и там уже пойму, где tac не прав. Если же мне даже в таком изложении будут неинтересен ИИ — то какая (для меня лично) разница, правильно ли тут все написано.

Я не говорил что в этих статьях все верно и этому надо верить полностью, я говорю о том, что у них порог вхождения ниже. Если появятся на хабре еще статьи про ИИ, написанные столь же простым языком — я буду только за. Пока же их, к сожалению, я не видел.
Мне сложно понять ваш подход. Для меня любые выводы, построенные на неверных посылках (в том числе выводы об интересности) — неверны.
Я то не в курсе, что посылы неверны, по причинам, объясненным ранее. И все это я хочу аккуратно подвести к предложению вам написать статью про ИИ. Не чтобы помериться письками с tac'ом, а чтобы рассказать таким, как я, что мы поняли неверно.
А вот тут есть нюанс, состоящий в том, что в ИИ я не разбираюсь.

Однако я смею надеяться, что разбираюсь в проектировании информационных систем вообще, ООП в частности. И вот тут я неоднократно ловил tac на ошибках (и писал о них комментарии). А зачем писать длинную статью, например, о приснопамятном паттерне Bridge (или о применимости функционального подхода), если об этом только ленивый уже не написал?
Тут мне нечего ответить, я говорил именно про ИИ, остальные статьи я не читал. Но мысль я вашу понял
Какого вы слушаете? Человека который не разу ничего не сделал, и утверждает что у меня что-то не верно :) Пусть пойдет и сделает, и покажет что не так — а словесных излияний этого человека я наслушался… поэтому то он и ему подобные могут орудовать только плюсометом.
Ах, да… а если вы или кто-то еще захочет «копать глубже» — обращайтесь, чем смогу помогу.
Благодарю, я сейчас как раз думаю над построением одной системы (там пока все очень эфимерно, так что детали пока не буду говорить), в которой может быть мне потребуется глубокое понимание ИИ
Но увы… последний опрос показал, что далеко не все программисты в курсе ИИ-проблематики.

Ну, а еще, далеко не все программисты в курсе проблематик компьютерной графики, построения и анализа алгоритмов, построения архитектур, программирования драйверов, использования защитного программирования…

Нет тут «увы», у каждого свое. И можно сделать тысячи подобных опросов, где и вам придется ответить «Нет, я не в курсе что это такое».

Понимаю, что ваша серия статей связана только с ИИ, но подобный опрос не может быть показателем качества образования, и не имеет права быть источником подобных выводов.
Конечно все так. Это мое «увы» — это мое субъективное «увы», сожалеющие о отсутствии подготовленной аудитории, и конечно же я не судил по опросу о качестве образования. Извиняюсь если кто-то так подумал.
UFO just landed and posted this here
Вы совсем двинулись на своём персептроне Розенблатта. У нормального однослойного персептрона (мёртвого уже лет 40) есть такая удивительная деталь, как сумматор. Для решения вашей задачи не нужно ничего, кроме него. Заполните матрицу весов единицами, и ошибок будет ровно ноль.

Вас кто-то очень обидел в «ИИ сообществе»?
Пруф.

Писать персептрон мне тоскливо, я даже своих студентов освободил от такой археологии. Поэтому берём python, берём Neurolab (или MATLAB и Neual Network Toolbox, портом которого Neurolab и является) и призываем персептрон без скрытых слёв, с двумя входами, одним выходом и линейной функцией активации (мы же не хотим мешать сумматору):

import neurolab as nl
import numpy as np
import matplotlib.pyplot as pl

net = nl.net.newff(minmax = [[0,64],[0,64]], size = [1], transf = [nl.trans.Purelin()])


Проверим сначала моё предположение, и напрямую выставим нулевой сдвиг и единичные веса:
nl.tool.np_set(net, np.array([0,1,1])


Сформируем вход:

m,n = range(64), range(64)
input = [[[a, b] for a in m] for b in n]
input = np.array(input).reshape(shape = (64*64, 2))


Получили вход вида
([[ 0, 0],
[ 1, 0],
[ 2, 0],
...,
[61, 63],
[62, 63],
[63, 63]])
Тогда выход, соответственно,

c = np.sum(input, axes = 1)

Протестируем сеть:

pl.matshow(net.sim(input).reshape(shape = (64,64)))

Инджой.

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

net = nl.net.newff(minmax = [[0,64],[0,64]], size = [1], transf = [nl.trans.Purelin()]) #reinitialize
net.train(input = input[::2], target = c[::2])

Лог изменения ошибки:

[4.3691578041483729e+65,
1.563153950598895e+64,
5.6836071277516877e+62,
2.9769819329424415e+61,
1.0504650257071223e+61,
9.8143560445701035e+60,
9.7779400880300074e+60,
5.9248762109972475e+41,
5.8088683355000359e+39,
5.6453929138802899e+39,
8.7363656588584911e+19,
4.0091994306583206e+17,
3.443965887101271e+17,
0.014586921973431978,
0.0029031555951286657]

Как видим, в финале ошибка весьма близка к нулю. Если двух десятитысячных недостаточно, обучение можно продолжить.
Интересно, какие веса установила себе сеть в процессе обучения?

>>> nl.tool.np_get(net)
array([-0.00526347,  1.0000747 ,  1.00008568])


Приводить результат сети графически смысла не вижу, визуально он неотличим от рисунка, приведённого выше. Думаю, хорошей проверкой может быть сравнение сумм «правильных» ответов и ответов, данных сетью:
>>> sum(c)
258048
>>> sum(net.sim(input))
258050.20745549328


Отличие в 2.2 на четверть миллиона. Квадратичное отклонение одна десятимиллионная. Мне кажется, close enough.
Вы как обычно, даже не поняли о чем в статье речь. Объяснять не буду — скучно с вами.
Вообще, никак, абсолютно неважно о чём вы пытаетесь говорить, если в первом же утверждении вы порете ерунду. В вашем примере нейросеть, обученная на каждой второй точке, да ещё зачем-то с колоссальной избыточностью, даёт точность дай бог 30% за пределами обучающей выборки, то есть пальцем в небо. Хотя должна давать ровно 100, что я и показал. Таким образом, при всех ваших умствованиях вы на практике не можете решить элементарнейшую до абсурдности задачу. Какая разница, о чём вы умствуете? Вы некомпетентны.
Впрочем, установите выход как и у меня в задаче — через точку, чтобы поверхность выглядела как шахматная доска, и тогда дайте результаты прогноза после обучения.
Я так и сделал, читайте внимательней.

На вход подаём только каждое второе значение, как завещали классики.


Вот это [::2] в коде как раз и означает каждую вторую точку:
<source = «Python»>
net.train(input = input[::2], target = c[::2])
И выложите полный код, что-то я не понимаю что вы делаете. Ну, и потом, мы о какой сети говорим? MLP+BackProp… проблема библиотек в том, что не видно что они делают…
В моём ответе приведён весь код с комментариями, не знаю, что здесь можно не понять. Если у вас конкретные вопросы, задайте их.

Это не многослойный персептрон, это однослойны персептрон, а фактически один(!) нейрон персептрона с двумя входами и одним выходом, обучаемый обобщённым правилом Уидроу-Хоффа, то есть
градиентным спуском.

Это можно сделать без библиотек, алгебраически выход этой сети эквивалентен F(w1*x1 + w2*x2 + b), где F в нашем случае линейная функция, x1,x2 — ваши входы, веса w1,w2, b надо обучить.
Не думал, что встречу человека, который не стесняется писать о нейросетях, и которому это надо объяснять.
Напишите это без библиотек — я утверждаю, что у вас это не получится. Один пороговый элемент не может решить эту задачу. А вы именно это утверждаете.
Это просто курам на смех. Вы утверждаете, что элемент w1*x1 + w2*x2 + b не может аппроксимировать функцию x1 + x2? На полном серьёзе?

Это не в моих правилах, но я отчаялся довести эту дискуссию до конструктива. Я только надеюсь, что любому здравомыслящему наблюдателю после этого всё уже ясно.
Я утверждаю, что Вы не построите такую сеть с помощью обучения на указанном обучающем множестве, которая будет не аппроксимировать, а будет давать точный ответ с точностью до целых чисел.
Я вас понял. Действительно выше я несколько читал по диагонали, думая что вы понимаете задачу поставленную мной. Но вы лишь нашли частное решение моей задачи. Т.е. нашли коэффициенты [-0.00526347, 1.0000747, 1.00008568] близкие к единице на архитектуре полностью повторяющей искомую функцию. Это противоречит собственно основав применения нейронных сетей. Это красиво для частных демонстраций, но речь то тут шла о другом.

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

Я-то отрежу, потому что в сколько-угодно-слойные персептроны будут всё равно входить нейроны, канонический вид которых я привёл. Проблема будет не в том, чтоб решить задачу, а в том, чтоб загасить все лишние элементы решателя, которые ему для этой задачи не нужны. Не очень перспективное занятие, на мой взгляд. Но несложное. Может, сразу скажете, как вы будете отмазываться тогда?
вы вначале сделайте, тогда поговорим
Вы как маленький. Если вам говорят, что что-то возможно, это обычно так и есть. Вот если говорят, что невозможно — да, обычно глупость.

Я не поленился. MLP, 300 нейронов в скрытом слое, обратное распространение ошибки.
Меня хватило на 500 эпох. Ошибка убывает убийственно медленно, и по хорошему надо ещё столько же. Но а) этот результат уже колоссально лучше вашего б) все мы знаем, какой у этой сети глобальный минимум и я не вижу ни одной причины, чтобы она его рано или поздно не достигла. А вы?

Динамика ошибки:
Epoch: 1; Error: 452711.998797;
Epoch: 2; Error: 76372483.8623;
Epoch: 3; Error: 8175804.78125;
Epoch: 4; Error: 21976242.8711;
Epoch: 5; Error: 4553489.62552;

Epoch: 496; Error: 1774.94830712;
Epoch: 497; Error: 1770.09887042;
Epoch: 498; Error: 1765.39419996;
Epoch: 499; Error: 1760.83450457;
Epoch: 500; Error: 1755.34308093;

График ошибки:



График выхода:


Расхождение сумм — без малого 37. Единица на десять тысяч.
Это уже серьезнее обсуждать. Можно начать.

У вас по прежнему два входа и один выход? Вместо моих 16 входов и 256 выходов?
Да. Потому что вы зачем-то решаете это как задачу классификации, хотя это типичная задача аппроксимации функции. Вот такой.

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

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

Картинки крупнее, на самом деле, если их открыть в отдельном окне.
Последний график красивый, если бы еще красным выделить, где ошибка в знаке…
Не понял, что такое «ошибка в знаке».
Ну, как я понимаю ваш график по оси X число возможных примеров сложения, а по Y ошибка.

Если попытаться бинаризировать, то нужно решить какой именно выход — какой цвет рисовать в квадрате.

Это вопрос интерпретации. Если ошибка строго ноль — то рисуем ответ конкретного примера. Соответственно, если ошибка от 0.5 до 1, то нужный ответ +1. Если от -0.5 до -1, то нужный ответ — 1… и т.д.

Вы же не можете нарисовать в RGB градацию 2+2=4.3 вам надо выбрать 4 или 5?

Так как вы выбираете? (тогда можно не говорить о «ошибке в знаке»)
На втором графике слева есть шкала от -3 до +2. Видимо, это то, что вы и имеете ввиду.

Если выбирать ответ математическим округлением, то
на обучающей выборке
2012 правильных ответов из 2048
на тестовой выборке
2959 правильных ответов из 4096

Чтоб было веселее: тепловая карта ошибки
то что надо
Что-то у меня не складывается — где на этой тепловой карте ошибок 2012 правильных ответов? Я не вижу регулярности обучающей выборки?
Жёлтенькое — это правильные ответы. Это тестовая выборка. 2959 из 4096.
Можете нарисовать вашу тестовую выборку — она похоже не шахматная доска, а горизонтальные через одну линии?
Обучающая выборка — шахматная доска, тестовая — сплошная. Да, так ярко, как у вас, они не выделяются, и это нормально. У персептрона действительно хорошие аппроксимирующие свойства.
> 2012 правильных ответов из 2048

Т.е. если я проведу на вашей тепловой карте шахматную доску, то я должен получить только 36 точек не совпадающих с желтым? Очевидно их больше…
Нет, примерно (4096 — 2959)/2 = 568. Вы всё ещё не различаете, что такое обучающая выборка, а что такое тестовая?
> Нет, примерно (4096 — 2959)/2 = 568

С какой стати? С чего бы перцептрону ошибаться «на экзамене» в той части тестовой выборки, которая совпадает с обучающей больше чем при обучении?
Вертикальные. Mea culpa. Это принципиально?
> Вертикальные.

Не понял? Вертикальные линии — обучающая выборка?

> Это принципиально?

Нет, только для понимания происходящего.

> Потому что вы зачем-то решаете это как задачу классификации, хотя это типичная задача аппроксимации функции.

Это другая сторона вопроса, которую вы слабо улавливаете. С чего вы решили, что это задача «аппроксимации функции» а не «задача классификации»?

Вы не умеете обобщать задачи, именно поэтому вы находите решение каждый раз по частную задачу, когда речь идет все время о построение универсально решателя.
Я умею решать задачи и выбираю под них подходящий инструмент, вместо «универсального решателя». Персептроны любого толка, кстати, являются универсальными решателями, именно поэтому они вымерли: они всё решают одинаково плохо.

Я решил, что это аппроксимация, во-первых, потому, что любая задача, решаемая персептроном, сводится к аппроксимации. А во-вторых потому, что для решения этого как классификации обучающее множество должно быть сильно больше (минимум на порядок).
Было бы не плохо нащупать границу между «задачей аппроксимации» и «задачей классификации», хотя понятно, что каждая из них сводима одна к другой.

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

ваш «физическом смысл» = мой «семантический выход»
Кроме этого, чисто из опыта и логики, классификатору для чёткого различения классов нужно как минимум N^n примеров (где N — число классов, n — длина входного вектора). То есть в нашем случае 65к вместо 4к.

Для задачи аппроксимации это в разы меньше, потому что аппроксимация по определению приближённая.
tac

//ваш «физическом смысл» = мой «семантический выход»//

Ни то, ни другое не имеет однозначное толкование.
И «смыслом» и «семантикой» наделяет текст человек.

На самом деле, граница между этими задачами в числе семантических выходов. Если семантический выход один — то вот и есть выигрыш на этоот MLP+BackProp… но все будет похоже хуже, если семантические выходов будет больше.

А вот определить, чем существенно отличаются семантические выходы — будет посложнее, и это и даст более четкую границу.
Вы когда-нибудь слышали о нечёткой классификации?
При чем здесь нечёткая классификация?
При правильной архитектуре неважно, сколько классов, выход всё равно один — номер этого класса.
Т.е. Вы считаете, что задачу классификации можно свести к аппроксимации и это будет лучше?
Классификация математически эквивалентна аппроксимации, только аппроксимируемая функция принимает ограниченное число значений. На практике, опять-таки, это и есть аппроксимации, только с другими требованиями к точности и с другим видом функции (что важно в других методах, но для персептрона не очень).
Нечёткая классификация окончательно уравнивает их, и по количеству необходимых данных, и по требованиям к точности.
Вот смотрите. Есть классическая задача — дано 60000 изображений 30х30 пикселей 10 рукописных цифр. Если Вы будите её решать как задачу аппроксимации у вас будет один выход как функция от изображения к возрастающему числу от 0 до 9. Вы думаете вы получите лучший прогноз?
Сложно говорить «вообще» потому что разный подход порождает разную архитектуру. У сети с 10 выходами априори больше весов, то есть больше степеней свободы и это может оказаться критичным.

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

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

Когда же вы сделали один выход вы начали выполнять лишнею задачу — мало-то что «аппроксимировать один обобщенный входной образ на каждую цифру» вы еще будите совмещать 10 таких функций в одну, причем между ними нет ни какой связи.
На самом деле, путей больше двух.
Ваш — самый архитектурно избыточный и самый, теоретически, устойчивый: один выход — один класс, победитель получает всё (не совсем понятное для бинарной сети правило, но допустим). Вполне возможно, что когда-нибудь он будет безошибочен, потому что сигналы можно разграничить очень чётко. Но обучаться до этого момента он будет примерно вечность (сколько там у вас весов? Несколько раз встречал рекомендацию о размере обучающей выборки — 100 наблюдений на каждый вес).

Второй — традиционный. Каждый выход возвращает 0 или 1, из них складывается двоичное число, которое и есть номер класса. Победителя не выбираем, сколько активировалось, столько и активировалось. Вместо N нейронов нужно всего лишь log2(N), что намного лучше с точки зрения времени обучения. Высокая точность теоретически достижима, практически едва ли, потому что любая случайная активация перебрасывает сигнал хрен знает куда.

Третий — нечёткий. На выходе всего один суммирующий нейрон, сеть, по сути, должна найти одну функцию от 900 аргументов, которая давала бы только 10 разных значений. Математически доказано, что при достаточном количестве весов это всегда выполнимо на сужающей функии — будь то сигмоида, ещё лучше радиально-базисная, ещё лучше вейвлет… короче, их много.
Минусы — абсолютная точность почти недостижима, потому что везде float. Плюсы — при ошибке возникает не хаотичное перескакивание в другой класс, а отклонение, пропорциональное объективной разнице сигналов. Его можно интерпретировать, обрабатывать, компенсировать и т.д., а не просто выбрасывать.
Ну, теперь Вы наконец-то написали взвешенно. С третим вариантом я работал меньше, как раз потому, что мне всегда казалось, что «абсолютная точность почти недостижима» — и это принципиально. В то время как в первом и втором варианте достаточно быстро её можно получить (быстрее чем BackProp), но вот с прогнозом там как видим похуже… хорошо бы совместить эти качества…
Нет, не нужно. Всё, что можно было сделать с персептроном, сделали два поколения (человеческих) назад. Возьмите что-то более актуальное — спайк-сети, жидкие, инфекционные, имунные, роевые алгоритмы, да мало ли — и попробуйте придумать что-то новое на острие науки, а не на антресолях.
> Но обучаться до этого момента он будет примерно вечность (сколько там у вас весов?

Там 1000 внутренних нейронов, т.е. 256*1000 весов. Обучается на всем множестве 64х64 около 1-2 часа, и это без оптимизаций, потенциал сокращения времени за счет памяти достаточно большой.
Дело не в физическом времени, а в модельном, то есть в количестве примеров в обучающей выборке.

Если у вас полносвязная сеть с 16 входами, 1000 нейронами в скрытом слое и 256 выходами, то у вас 273256 весов. То есть до сходимости классификатора вам нужно вам нужно порядка 27 325 600 сигналов в обучающей выборке. Эти астрономические числа на практике вполне проканают за «вечность».
> нужно порядка 27 325 600 сигналов в обучающей выборке

Это глупости. В разобранном тут примере всего 2048 сигналов, и все сходится.
Сходится — это нулевая ошибка. Так что, как вы сами видели, совсем не сходится.
ererer
//Персептроны любого толка, кстати, являются универсальными решателями, именно поэтому они вымерли: они всё решают одинаково плохо.//

Это фундаментальное заключение.
Привет, этому заключению сорок лет.
> Динамика ошибки:

Можно вас попросить дать число абсолютных ошибок после окончания вашего обучения, а не статистическую погрешность. Т.е. на обучающей выборке есть 2048 примеров. Сколько из них так и продолжили давать ошибку?

И тоже самое на экзамене там 4096 вариантов — сколько из них ошибок?

Я уже привёл график. Если в цифрах, то
На обучающей выборке
отклонение < 0.0001: 1021 из 2048,
отклонение < 0.01: 1931 из 2048
На тестовой выборке
отклонение < 0.0001: 1901 из 4096,
отклонение < 0.01: 3853 из 4096

Сложно сравнить с вашей, потому что у вас бинарная сеть, а у меня аналоговая.
Очевидно, надо бы решить, какое отклонение считать ошибкой.
> а) этот результат уже колоссально лучше вашего

Ваша проблема в том, что Вы пытаетесь показать, что я дурак, а Вы умный.

В то время как Вы показали не более не менее, что на данной частной задаче перцептрон Розенблатта потенциально может уступать в каких то аспектах другой сети MLP+BackProp… за что вам отдельное спасибо. Но для более полного сравнения нужно говорить о ряде других характеристик… выше я попросил некоторые из них дать.
То есть вы по крайней мере признали, что вы дурак в том, что выбрали для этой задачи персептрон Розеблатта, а не более подходящий инструмент. Прогресс.
На самом деле мне было интересно, как решит эту задачу MLP+BackProp. И Вы удовлетворили мой интерес. Сам я этим заниматься не хотел.

Я имел некоторый отрицательный опыт с MLP+BackProp. Но я пока не до конца могу сформулировать мои к нему претензии. Возможно они субъективные.

Но мне бы помог исходный код библиотеки, на которой вы это делали — он доступен? Еще идеальнее было бы получить код MLP+BackProp на C#… те варианты реализация которые я видел, кажется работаю хуже чем то что вы продемонстрировали.
Эта библиотека — прямой порт Neural Network Toolbox из Матлаба.
Вариант для питона лежит здесь: code.google.com/p/neurolab/

Остальное оставлю без комментариев.
> загасить все лишние элементы решателя, которые ему для этой задачи не нужны

А заодно может поймете — то чего не понимали в предыдущей статье, а именно как подавление шума может способствовать нахождению нужного решения.
Кроме того, речь идет не о сети с элементами w1*x1 + w2*x2 + b… это вы специально выбрали? (ведь я вам указывал, что вы не понимаете задачу)

Речь идет о сети со средним слоем, с произвольно заданным числом нейронов!
Зачем вам скрытый слой, если с этой задачей справляется один нейрон?
Потому что задача в другом, а вы это не понимаете.
Уж что-что, а задачу вы сформулировали предельно чётко. Посчитать нейросетью сумму двух чисел. Я смог, вы нет. Problems?

Остальные задачи вы ставите дальше. Я бы решал их другими методами. Но зачем, если вы не справились и с первой?
>Посчитать нейросетью

у вас ее нет.
нет предмета спора
Ну отчего же. Вы говорите, что это не нейросеть, а я говорю, что это она и есть. Чем не предмет?
tac: «У подножья пирамиды ИИ сидят оракулы — это те люди которые громогласно заявляют мы занимаемся «сильным ИИ», «слабый ИИ» — нас не интересует. Это фрики — как минимум те, которых я встречал все были именно фриками.»

Неужели таких людей так много, что они могут занять все подножие пирамиды? Конечно, такие люди, как Марвин Минский, Дуглас Ленат, Джон Маккарти, Рэй Соломонов и другие оракулы исходно были и даже оставались фриками на протяжении более чем полувека. Но все же они заслуживают уважения. (Немного к ИИ не относится, но Перельману не помешало то, что его тоже можно назвать фриком, доказать гипотезу Пуанкаре).
Как вы отделите тех, кто за деревьями теорий в ИИ видит лес сильного ИИ, так же как некоторые теоретики абстрагируются от частных задач, кто прошел стадии «инженеров» и «теоретиков» (нередко оставаясь ими) и пришел проблематике сильного ИИ, от тех, кто «занимается» сильным ИИ без особого предварительного практического и теоретического опыта?

tac: «Если Вы молодой человек который еще в этом не повяз — выбирайтесь из этого болота, оно засасывает хорошие умные головы.»

Грустно слышать такие заявления. Адекватных людей в области сильного ИИ и так немного, а если их еще оттуда отвращать, то там действительно останутся одни фрики в самом плохом смысле этого слова. Так что призываем всех «молодых людей» хотя бы думать своей головой…
Адекватных людей в области сильного ИИ вообще нет. Минский к примеру вообще к этому не относится. Поэтому статья призвана перенаправить адекватный людей на путь к беседке на верху пирамиды.
Лучше, конечно, им самим решать, относят ли они себя к области сильного ИИ. Но:
1) Очевидно, что в середине прошлого века относили в том смысле, что заявляли, что создание мыслящих машин не за горами;
2) Продолжали относить и потом; по крайней мере, некоторые из них. Читайте, например,
McCarthy J. The Future of AI—A Manifesto // AI Magazine. 2005. V. 26. No 4. P. 39.
Nilsson N.J. Human-Level Artificial Intelligence? Be Serious! // AI Magazine. 2005. V. 26. No 4. P. 68–75.
Solomonoff R. Algorithmic Probability, Heuristic Programming and AGI // In: E.Baum, M.Hutter, E.Kitzelmann (Eds), Advances in Intelligent Systems Research. 2010. V. 10 (Proc. 3rd Conf. on Artificial General Intelligence, Lugano, Switzerland, March 5-8, 2010). P. 151–157.

Или, скажем, Шмидхубера Вы считаете недостаточно известным ученым? Или неадекватным? Или будете уверять, что он не работает в области сильного ИИ?

Извините, но, похоже, Вы просто не в контексте… (я уж пропущу Ваш намек на нашу неадекватность, чтоб не разводить флейма)
Вы лично про сильный интеллект еще не написали не оной статьи, поэтому именно к вам лично пока претензий нет :)
То есть за Минского не хотите отвечать? ))
Дело-то не в претензиях лично к нам, а в Вашем утверждении: «Адекватных людей в области сильного ИИ вообще нет», которое является очевидным сверхобобщением. Как специалист по машинному обучению, Вы должны знать, что это такое. Так что либо отвечайте по каждому конкретному случаю о неадекватности людей, либо признавайте свое утверждение как ложное.
А что у нас с Минским?
Видимо, примерно то же, что и с Маккарти.
Видимо, т.к. я не помню, чтобы Минский занимался проблематикой сильного ИИ, я вообще нигде не встречал, чтобы классики ИИ уделяли бы этому внимание.
В принципе вообще как таковой проблематики сильного ИИ — не существует.
Ну, хорошо, чтобы не уходить в словоблудие, поставим точки над ё.

Для сравнения:

tac: «Адекватных людей в области сильного ИИ вообще нет»; «Если Вы молодой человек который еще в этом не повяз — выбирайтесь из этого болота, оно засасывает хорошие умные головы.»

Маккарти: «I think the best hope for human-level AI is logical AI, based on the formalizing of commonsense knowledge and reasoning in mathematical logic.»; «AI research should not be dominated by near-term applications. DARPA should recall the extent to which its applied goals were benefitted by basic research. NSF should not let itself be seduced by impatience.»

И пусть каждый, как хочет, так эти высказывания и интерпретирует, сравнивает и делает из них свои выводы.
Извиняюсь, первая цитата Маккарти должна быть эта:
«The long-term goal of AI is human-level AI… Basic researchers in AI should measure their work as to the extent to which it advances this goal.»
Верно, если нет «сильного ИИ», то, значит, нет и соответствующей проблематики.
Да, вообще-то критерий даже не этот. Есть или нет это вопрос вторичный.

В этом отношении, мне нравятся слова Таубе (которые приводит Лем в «Сумме технологий»):

1. предлагается конструкция машины, предназначенной для моделирования человеческого мозга, который не описан;
2. подробно описанные характеристики машины полагаются аналогичными характеристикам мозга;
3. затем делается «открытие», что машина ведет себя подобно мозгу; порочность состоит в «открытии» того, что было постулировано".
Надо разорвать «круг Таубе»! Иначе будем постояно толкаться в этих «трёх соснах».
Вопрос в том — как?

1. Человеческий мозг полностью не будет никогда описан, пока не будет создана модель для моделирования человеческого мозга
2. Чтобы говорить о модели человеческого мозга применительно к машине мы вынуждены делать аналогии, которые по определению будут постоянно спекулятивны
3. Если мы будем на основании пунктов 1 и 2 делать «открытия» — мы будем не больше не меньше, а только оракулами сильного ИИ.
tac

//Человеческий мозг полностью не будет никогда описан, пока не будет создана модель для моделирования человеческого мозга//

Дело в том, что с подачи «мозговедов» подброшена идея, что «мозг отвечает за умственную деятельность человека». На самом деле это далеко не так. И тому есть тысячи примеров. Мозг лишь приемо-передатчик между физическим миром и ментальным сознанием.

Поэтому копировать мозг — дело контрпродуктивное.
Тем не менее, многие верят в мозг, как верят в бога.
Ой, интересно, а с кем же тогда так усиленно спорили Дрейфус, Сёрл и прочие философы? А чем является Общий Решатель Задач Ньюэлла и Саймона или Универсальная Индукция Соломонова как не работами в области «сильного ИИ» (пусть тогда этого термина еще не было)? А разве многие будущие классики в середине прошлого века не говорили, что создание компьютеров, обладающих уровнем интеллекта, сопоставимым с человеческим, будет возможно в ближайшие десятилетия?.. А чего Вы еще не помните и не встречали?
С ними поэтому и спорили, что они то думали что они занимаются чем то связанным с интеллектом — но их в историческом плане поставили на место — указав им место названное «слабый ИИ». И им достаточно хорошо объяснили, что то чем они занимаются это не сильный ИИ, и не стоит на это претендовать. И они в общем-то смерились. Не смерились как раз другие — те кого я назвал оракулами.
Еще раз, прочитайте указанные статьи от президентов AAAI. Вот еще пара в добавок:
Brachman R. Getting Back to “The Very Idea” // AI Magazine. 2005. V. 26. No 4. P. 48–50.
Cassimatis N., Mueller E.T., Winston P.H. Achieving Human-Level Intelligence through Integrated Systems and Research // AI Magazine. 2006. V. 27. No 2. P. 12–14.
После прочтения ответьте на вопрос, вы уверены, что они смирились? Не додумывайте абстрактно за них, а почитайте, что они пишут. Никто «на место» этих людей не поставил. У философов и психологов для этого слишком «кишка была тонка».
Познакомьтесь с современной обширной литературой по семантическому основанию символов, где есть множество вполне обоснованных претензий на разрешение парадокса китайской комнаты (который, вообще говоря, специалисты по ИИ особой проблемой и не считали никогда).
Именно работы, претендующие на достижение настоящего ИИ, и двигали реально вперед эту область, пусть они пост фактум и оказывались недостаточными. А философствования на тему «круга Таубе» — вот это как раз и является оракулизмом.
Да, антропоморфизм «сильного ИИ» мешает дать ему четкое определение. Поэтому сейчас и говорят об «artificial general intelligence», который на человека вообще никак не ссылается и описывается в чисто кибернетических терминах. И абсолютно не важно, будут ли за таким ИИ философы признавать разум или окрестят «бездушной машиной». Суть работ в данной области от этого не меняется.
Я очень привязался к саркастическому определению, которое Хофштадтер приписывает Ларри Тесслеру: «ИИ — это то, что ещё не сделано». В том смысле, что каких бы успехов не достигли в этой области, решённые задачи немедленно объявляются не такими уж интеллектуальными и «ИИ» каждый раз отодвигается ещё немного дальше. Это было сказано ещё до разделения ИИ на вычислительный и общий, но в целом, на мой взгляд, не потеряло актуальность.
Да, есть такое высказывание, но его тоже можно понимать в положительном и отрицательном смысле.
А вот это уже попахивает софизмом от оракулов. Да, бывает и так — со временем инженеры скатываются со ступенек пирамиды…
Вы таким способом хотите подтвердить правоту tac'а? Ну, один положительный пример не доказывает общего правила…
aideus

А в чём, собствено, суть «общего правила»?

Вы могли бы свою позицию детализировать?
Постулируемое tac'ом общее правило: «Адекватных людей в области сильного ИИ вообще нет».
aideus

В одном tac говорит верно. Если бы в ИИ действительно были адекватные спецы, то они уже давно бы что-нибудь такое сотворили адекватное. А раз не сделали, то, значит, и не адекватные.

Если Вам показалось, что tac претендует на «исключительную адекватность» в ИИ, то скажем мягко, что это Вам показалось.

Мой подход в ИИ и к ИИ таков, что надо следовать Принципу «От простого к сложному». И многие последовали этому Принципу. Но последовали по пути «слабого ИИ», то есть, по пути моделирования физиологических реакций человека на сигналы из окружающей среды. Робототехника называется.

Я же призываю применить данный Принцип в направлении «сильного ИИ», то есть, моделируя человеческий Разум, а не психическую рефлексию.

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

McCarthy — и причем тут сильный ИИ, когда он не дня им не занимался?
Прочитайте указанную статью.
Ну, или если лень, вот цитата: «The long-term goal of AI is human-level AI… Basic researchers in AI should measure their work as to the extent to which it advances this goal.»
(если Вам лично не нравится термин «сильный ИИ», то давайте говорить о «human-level AI»)
Мне не нравится постановка вопроса о создании сильного ИИ в оригинальном определении «такая программа будет не просто моделью разума; она в буквальном смысле слова сама и будет разумом».

«human-level AI»

«искусственный интеллект уровня человека»? Под этим можно понимать совершено другое. Что Вы под этим понимаете?

И Маккарти может говорить что угодно, только он ничего не делал в этом направлении, он работал ТОЛЬКО над слабым ИИ в его классическом смысле.
Читаем Маккарти дальше:
«I think the best hope for human-level AI is logical AI, based on the formalizing of commonsense knowledge and reasoning in mathematical logic.»
А именно этим он и занимался. Вы можете сказать, что его подход к human-level intelligence может дать в итоге лишь слабый ИИ. И с этим я соглашусь. Но это не отменяет того факта, что сам Маккарти полагает, что работал именно в направлении human-level intelligence.

Теперь о терминах. С ними, конечно, все плохо. Но «human-level intelligence» — это эфвемизм, замена термина «сильный ИИ». Сейчас еще есть «artificial general intelligence». Мы предпочитаем говорить про «универсальный интеллект», но он тоже вызывает вопросы. Однако, может, люди расходятся в терминах и в их понимании относительно сильного ИИ, но всем понятно, что такое слабый или специализированный ИИ. И всем понятно, что слабый ИИ не является ни сильным, ни универсальным, ни human-level. И где на вашей пирамиде находятся люди, которые занимаются «неслабым» интеллектом?
> formalizing of commonsense knowledge and reasoning in mathematical logic

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

> но всем понятно, что такое слабый или специализированный ИИ

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

> И где на вашей пирамиде находятся люди, которые занимаются «неслабым» интеллектом?

Лучше я вам еще раз объясню, кто такие «оракулы у подножья пирамиды». Как только вы начали говорить о классиках ИИ и подозревать их в связи с сильным ИИ, а дальше в рамках данной мной схемы отобразили их на оракулов. Вы ошиблись в таком отображении. Все те классики, о которых вы начали говорить, Маккарти, Минский, Розенблатт и т.д. занимались именно начиная с построения слабого интеллекта. Ни кому из них не приходило в голову строить модели сильного интеллекта. В моей схеме это означает, что они уже толкались на ступеньках пирамиды. Многие классики на этом и закончили — к примеру Маккарти. Минский и Розенблатт побывали в «беседке на вершине пирамиды». Но это не означает что они занимались теориями сильного ИИ. Они указывали как решать более общее задачи слабого ИИ, с попыткой приблизится к человеческому интеллекту. Начать со слабого ИИ и обобщить попытки, подходы — да это путь наверх. Начать с сильного ИИ — это обречь себя сидеть у ступенек пирамиды. Вот одна простая мысль.
tac: «Они указывали как решать более общее задачи слабого ИИ, с попыткой приблизится к человеческому интеллекту. Начать со слабого ИИ и обобщить попытки, подходы — да это путь наверх.»

Это и означает «заниматься сильным ИИ».
> Это и означает «заниматься сильным ИИ»

Нет.
> Лучше, конечно, им самим решать, относят ли они себя к области сильного ИИ

На самом деле, хотя я и записал статью DenisVitman`a — в оракульские, но решать что относится к области сильного ИИ — задача как раз психологов, раз на то пошло. Такие термины как сознание, восприятие, мотивация и прочие — это термины психологии, если кибернетики построят модель и психологи согласятся — да это оно и есть — то только тогда можно говорить о том, что кибернетик занимается в области сильного ИИ.

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

С другой стороны, кибернетик не может сам наделять смыслом психологические термины смыслом — иначе он будет всегда делать круг Таубе.
> Их терминология — эфемерна и пуста, она не может служить основанием для построения систем.

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

Занимаясь же сильным ИИ — все хуже — это все равно, что психолог и душевнобольной это одно лицо — я спрашиваю и я же отвечаю, и получается круг Таубе.
Sign up to leave a comment.

Articles