71
Общение / Re: Краткая история человечества
« Последний ответ от Gradient 07 Июля 2019, 16:05 »Добавлю немного взгляда со стороны машинного обучения =)
В машинном обучении есть такая штука как обученная модель. Мы берём данные наблюдений и подбираем некий алгоритм, который мог бы их сгенерировать - такой алгоритм называется обученной моделью. Никто не ставит целью сгенерировать датасет идеально точно - надо лишь сделать функцию ошибки поменьше. В смысле, схема такая: есть известные данные, есть наша модель, есть некоторые неизвестные данные. Мы запускаем модель на известных данных, и она предсказывает неизвестные - например, по положению Юпитера минуту назад предсказывает его положение через минуту.
Этот этап аналогичен формированию гипотезы на базе наблюдений.
Следующий этап - кроссвалидация. У нас есть некие данные, которых не было на этапе обучения. Мы запускаем модель на этих данных и проверяем, чему равна, допустим, среднеквадратическая ошибка.
Этот этап аналогичен эксперименту.
А затем, если нас устраивает точность, мы эту модель пускаем в продакшн - и это аналогично тому, как если бы мы по итогам экспериментов назвали гипотезу теорией.
Я это к чему всё говорил. Каждый раз, когда теория с эпициклами проваливалась - выяснялась её недостаточная точность - эту теорию, с точки зрения машинного обучения, отправляли на помойку, а в прод пускали другую теорию - в которой на один эпицикл больше. Эксперимент над одной теорией про эпициклы не позволял сказать что-либо о других теориях, основанных на эпициклах.
Конкретную обученную модель вполне можно опровергнуть (увидеть, что она в среднем даёт неудовлетворительное качество прогноза). Опровергнуть, возможно, нельзя всё семейство моделей, то есть все теории, основанные на эпициклах.
Потом. Теория - это не просто что-то, что верно или неверно. У теории есть уровень точности - среднеквадратическая ошибка, например, на отложенной выборке. Поэтому если некая теория работает неудовлетворительно, но альтернатив нет... Появился над-теория: "Теория Х верна в случаях А, Б, В, в остальных случаях аппроксимируем искомую величину белым шумом". Мы выкинули из прода теорию Х, и поместили туда эту над-теорию.
Кроме того, есть такой подход к созданию моделей, как бустинг. В реальной жизни это выглядит так: мы сделали теорию, она прогнозирует траектории планет, но допускает какие-то систематические промахи. Мы говорим: ну, значит, там есть ещё какое-то воздействие. Именно оно объясняет эти ошибки! Назовём его тёмной материей! И создаём новую теорию, которая прогнозирует эти ошибки. Дальше смотрим - а даже сумма из этих двух теорий даёт не вполне точный прогноз. И придумываем новую теорию, которая прогнозировала бы эти ошибки.
Получается стопка теорий, и это похоже на эпициклы. Но это в целом работает.
А потом приходит какой-нибудь новый теоретик и находит, как 2-3 слоя "эпициклов" заменить одной теорией, которая проще, чем эти слои в сумме. И получается новая теория, которая обычно прогнозирует лучше. Просто потому, что обычно более простые теории, при прочих равных, дают лучший прогноз.
Заменить неправильные факты на правильные можно, но в таком случае мы получим иную теорию - в том смысле, что она не будет с точностью до бита совпадать со старой и не будет давать точно такие же прогнозы. Но она может быть из того же семейства - то есть формулы такие же, а константы другие. А может выйти, что при замене верных фактов на неверные, мы не сможем подобрать константы. Если y=x^2, то какие коэффициенты не подбирай, линейная зависимость будет предсказывать Y достаточно плохо.
Так что если у нас теория плохо предсказывает, мы можем её загнать в рамки или усилить "эпициклами", то есть бустингом. И держать постоянно в уме, что она не очень точная. И отбросить её, когда появится что-то получше.
В машинном обучении есть такая штука как обученная модель. Мы берём данные наблюдений и подбираем некий алгоритм, который мог бы их сгенерировать - такой алгоритм называется обученной моделью. Никто не ставит целью сгенерировать датасет идеально точно - надо лишь сделать функцию ошибки поменьше. В смысле, схема такая: есть известные данные, есть наша модель, есть некоторые неизвестные данные. Мы запускаем модель на известных данных, и она предсказывает неизвестные - например, по положению Юпитера минуту назад предсказывает его положение через минуту.
Этот этап аналогичен формированию гипотезы на базе наблюдений.
Следующий этап - кроссвалидация. У нас есть некие данные, которых не было на этапе обучения. Мы запускаем модель на этих данных и проверяем, чему равна, допустим, среднеквадратическая ошибка.
Этот этап аналогичен эксперименту.
А затем, если нас устраивает точность, мы эту модель пускаем в продакшн - и это аналогично тому, как если бы мы по итогам экспериментов назвали гипотезу теорией.
Я это к чему всё говорил. Каждый раз, когда теория с эпициклами проваливалась - выяснялась её недостаточная точность - эту теорию, с точки зрения машинного обучения, отправляли на помойку, а в прод пускали другую теорию - в которой на один эпицикл больше. Эксперимент над одной теорией про эпициклы не позволял сказать что-либо о других теориях, основанных на эпициклах.
Конкретную обученную модель вполне можно опровергнуть (увидеть, что она в среднем даёт неудовлетворительное качество прогноза). Опровергнуть, возможно, нельзя всё семейство моделей, то есть все теории, основанные на эпициклах.
Потом. Теория - это не просто что-то, что верно или неверно. У теории есть уровень точности - среднеквадратическая ошибка, например, на отложенной выборке. Поэтому если некая теория работает неудовлетворительно, но альтернатив нет... Появился над-теория: "Теория Х верна в случаях А, Б, В, в остальных случаях аппроксимируем искомую величину белым шумом". Мы выкинули из прода теорию Х, и поместили туда эту над-теорию.
Кроме того, есть такой подход к созданию моделей, как бустинг. В реальной жизни это выглядит так: мы сделали теорию, она прогнозирует траектории планет, но допускает какие-то систематические промахи. Мы говорим: ну, значит, там есть ещё какое-то воздействие. Именно оно объясняет эти ошибки! Назовём его тёмной материей! И создаём новую теорию, которая прогнозирует эти ошибки. Дальше смотрим - а даже сумма из этих двух теорий даёт не вполне точный прогноз. И придумываем новую теорию, которая прогнозировала бы эти ошибки.
Получается стопка теорий, и это похоже на эпициклы. Но это в целом работает.
А потом приходит какой-нибудь новый теоретик и находит, как 2-3 слоя "эпициклов" заменить одной теорией, которая проще, чем эти слои в сумме. И получается новая теория, которая обычно прогнозирует лучше. Просто потому, что обычно более простые теории, при прочих равных, дают лучший прогноз.
Заменить неправильные факты на правильные можно, но в таком случае мы получим иную теорию - в том смысле, что она не будет с точностью до бита совпадать со старой и не будет давать точно такие же прогнозы. Но она может быть из того же семейства - то есть формулы такие же, а константы другие. А может выйти, что при замене верных фактов на неверные, мы не сможем подобрать константы. Если y=x^2, то какие коэффициенты не подбирай, линейная зависимость будет предсказывать Y достаточно плохо.
Так что если у нас теория плохо предсказывает, мы можем её загнать в рамки или усилить "эпициклами", то есть бустингом. И держать постоянно в уме, что она не очень точная. И отбросить её, когда появится что-то получше.