"Сила интеллекта" - в архитектуре нейронной сети, естественной или же искусственной. Пока искусственные НС не дотягивают до естественных.
Ага... Щас!
При прочих равных условиях нейросети бьют человека. Вы разве не слышали?
Ваша фраза "пока нейросети не дотягивают до ..." настолько бездумна, банальна и избита. Фактически вы хотите сказать "Пока задачи, которые нынче решаются нейросетями, меня не удовлетворяют, я хочу большего". Но не надо распространять свою неудовлетворённость на "силу интеллекта". Нету никакой силы интеллекта, есть logloss и accuracy. По этим показателям человек зачастую проигрывает.
Сколько в велосипед бензина не заливай, а он самолетом не станет. Хорошая аналогия состоит в следующем. Не надо копировать принципы работы естественного интеллекта для создания сильного ИИ. Точно также не надо копировать биохимию и движение птиц, чтобы создать самолет. Надо выделить главный эффект, который позволяет птицам летать, подъемную силу, используя этот эффект можно сконструировать дельтаплан и самолет, но не обязательно делать махолет.
Разногласия:
1. Сильный интеллект. Его не существует, нету никаких усилителей интеллекта. Есть только данные и в них нужно находить признаки. Есть хорошо работающие алгоритмы, есть плохо работающие. А ещё бывает данных нет - тут уже никакая "сила" не поможет.
2. Никто ничего не копирует. Вы знаете сколько методов машинного обучения помимо прославленных нейронных сетей? Все эти архитектуры объяснены. Принцип полёта ясен как пень.
-- 07.10.2018, 10:18 --Я тут натравил MLP с одним скрытым слоем и 200 нейронами в этом слое на задачу MNIST.
Код:
import pandas as pd
path = 'D:/Anaconda/share/MNIST/'
data = pd.read_csv(path + 'train.csv', index_col='label')
# Простое разбиение выборки на обучающую и тестовую
k = 30000
y_train=data[0:(k-1)].index
x_train=data[0:(k-1)].values
y_test=data[k:41999].index
x_test=data[k:41999].values
from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='sgd', max_iter = 10, alpha=1e-4, hidden_layer_sizes=(200), random_state=1)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))
Получен результат 0.9232436036336361 (аккуратность, доля правильных ответов). На стареньком компьютере работа алгоритма занимает всего 10 секунд. Обучение на 30000 символах, тест на 12000 символах.
Конечно 92% - это маловато. Слишком много символов (около 960 из 12000) распознаны ошибочно.
Давайте проанализируем, почему случаются ошибки. Для этого запустим код, который выведет нам несколько символов, на которых алгоритм ошибся.
Код:
import matplotlib.pyplot as plt
# Пороемся в первой сотне символов
for i in range(100):
if (y_pred[i] != y_test[i]):
imgplot = plt.imshow(x_test[i].reshape(28, 28))
print(y_pred[i])
plt.show()
Результат:
Красными прямоугольниками (см. стрелочку) я выделил ответы нейросети. Как видно, нейросеть, даже ошибаясь, даёт правдоподобные ответы. Можно просмотреть все ошибочно распознанные символы, там везде ситуация аналогичная.
Вы скажете: человек не сделал бы ни одной ошибки!
Мой ответ: поставьте машину в равное положение, чтобы сравнивать. Машина не знает принципы рукописания. Только человек может понять, что при написании цифры 8 дрогнула рука, ручка оторвалась от бумаги и завершающая часть цифры 8 не дорисована.
К сожалению, мой алгоритм не обучался рукописанию. Проблема не в силе интеллекта, а в обучающих данных.