Без заголовка
Пожалуйста, не учите людей плохому. Те же самые ошибки, о которых я вам говорил и месяц и два месяца назад, всё ещё в слайдах.
Только ещё добавились новые, типа того, что ансамбль нейросетей предшествует обучению,
и про сравнение нейросетей с аспектным программированием. Ну откуда вы это берёте?
Скажем, АОП вполне хорош, когда аспекты ортогональны друг другу, просто паттерны комбинирования неортогональных аспектов -- это функциональная парадигма, и она с ООП плохо сочетается -- т.е. проблема на практике исключительно в несовместимых правилах компоновки кода и разбиения на объекты. Но у вас почему-то АОП "плох" из-за "сложности отладки"!
Нету никакой связи сложности отладки и методов компоновки кода, отладка сложна, когда data flow сложный и нет методов интроспекции данных.
Вам кажется, что нейросети сложно отлаживать? Но и файловые системы, и базы данных без файлового менеджера, удобного API или IDE тяжело отлаживать.
Дальше, у вас почему-то distilling knowledge отличается от transfer learning. Наверное, потому что вы выделяете ансамбль нейросетей в отдельную сущность, отличающуюся от одной нейросети? Но ведь это чушь: и то, и другое классический "чёрный ящик", он же модуль. Пока он "работает", вам не нужно заглядывать вовнутрь, делить его на подмодули или перекомпоновывать.
Не понимаю также ваше категоричное высказывание о слабости спецификаций нейросети -- заблуждения плохого менеджера Le Bottou я уже вроде бы разбирал.
Вот вам императивный модуль, постройте на него "сильную спецификацию", расскажите человеческим языком, что он делает, и что он не делает:
a = set([...]) # array with 10k elements
def is_good(x):
q = 0
for c in x:
if c in a: q+= 1
if q >= 2: return False
return True
Увы, любая сложная технология неотличима от магии, в том плане, что "работает, но непонятно почему". Модули "специфицируемы" только пока вы с помощью них решаете тривиальную задачу, легко выражаемую человеческим языком -- то есть хорошее специфицирование модулей -- это не техническая проблема, а проблема устройства человеческого языка.
Я думаю, всё проистекает из двух корней:
1) вы не потрудились формально объяснить, что такое "плохая" модульность. Во всяком случае, в слайдах этого нет.
2) вы зациклились на идее end-to-end learning, и везде предполагаете, что нейросеть неделимая и должна быть одна на систему. Но тогда почему вы не сравниваете это с одномодульным классическим программным обеспечением, типа, "на sed плохо писать большие программы".
Вот просто возьмите и замените везде в ваших слайдах слово "нейросеть" и "нейросетевая модель" на слово "модуль", а "обучение" на "программирование" -- и ничего же не поменяется.
Наверное, нужно обогатить ваш лексикон понятием "net surgery", а дальше уж поди дозреете, что особенность нейросетей лишь в том, что обучать их можно при наличии данных, а данные не всегда имеются на каждую часть нейросети, и end-to-end-learning как раз обходит эту проблему, а в классическом модульном подходе ту же самую проблему приходится решать анализом + синтезом + построением модульной архитектуры, и почему-то вы этот "анализ задач модуля" и "синтез модулей" воспринимаете как лёгкую процедуру, и оставляете только "построение архитектуры".
У вашей "модернизации заменой модулей" та же самая отнологическая проблема -- должны быть модули в наличии, и спецификация модулей должна совпадать, а иначе получим "конфликт онтологий". Ага, было бы это легко, мы бы уже к звёздам летали. А вы попробуйте на практике заменить модуль из 1С на модуль из SAP-а, и обнаружите, что ваша теория концентрируется на мелочах и упускает главное.
В общем, я считаю, что вы на самом деле противопоставляете друг другу крупноблочную сборку и мелкоблочную. Нейросетевые решения тяготеют к крупноблочной сборке, представляемые вами классические системы -- к мелкоблочной. Но это следствия разных решаемых задач. Вы можете сколько угодно крупные модули делить на мелкие, если это будет улучшать качество решения задач -- хоть в нейросетях, хоть в классических программах. Но ввиду специфики задач, для которых применяются нейросети -- деление на более мелкие модули не помогает. Потому что если бы помогало, то давно бы уже написали классическую мелкоблочную программу для решения этих задач.