Евгений Сергеевич Штольц

Machine learning – от модели PyTorch до Kubeflow в облаке для BigData


Скачать книгу

с учителем (supervised) и без (ansupervised) и они пригодны для разного класса задач. При обучении без учителя мы даём данные на вход нейронов сети о ожидаем, когда она сама найдёт какие-нибудь закономерности, при этом данные не размечены (не имеют каких-то меток по классификации), что позволит выявить ранее неизвестные особенности, сходства и различия,и классифицирует по ещё ненайденным признакам, но как это будет происходить предсказать сложно. Для большинства задач нам нужно получить классификацию по заданным группам, для чего мы на вход подаём обучающую выборку с размеченными данными содержащие метки об правильном решении ( например, классификации, и стараемся добиться совпадения с этой тестовой выборкой. Также может быть с подкреплением (reinforcement), при котором сеть пытается найти наилучшее решение на основе стимулов, например, при игре добиться превосходства перед соперником, но пока, отложим рассмотрение данной стратегии обучения на потом. При обучении с учителем требуется гораздо меньше попыток подобрать вес, но всё же это от нескольких сотен до десятков тысяч, при этом сама сеть содержит огромное количество связей. Для того, чтобы найти веса, мы подбором и направленным уточнения их подбираем. С каждым проходом мы уменьшаем ошибку, и когда точность нас устроила, мы можем подавать тестовую выборку для валидации качества обечения (сеть могла плохо обучиться или переобучиться), после можно использовать сеть. В нашем примере, это могут быть немного искривлены цифры, но благодаря тому, что мы выделяем области, это не сильно сказывается на точности.

      При обучении нейрона с учителем мы на него подаёт обучающие сигналы и получаем на выходе результаты. На каждый сигнал входной и выходной мы получает результат о степени ошибки в предсказании. Когда мы прогнали все обучающие сигналы, мы получили набор (вектор) ошибок, который может быть представлен в виде функции ошибок. Эта функция ошибок зависит от входных параметров (весов) и нам нужно найти веса при который эта функции ошибок становится минимальной. Для определения этих весов применяется алгоритм Градиентного спуска, суть которого заключается в постепенном движении к локальному чинимому, а направление движения определяется производной от этой функции и функции активации. В качестве функции активации обычно выбирают сигмойду для обычных сетей или усечённую ReLU для глубоких сетей. Сигмойда на выходе даёт диапазон от нуля до единицы всегда. Усечённая ReLU всё же позволяет при очень больших числах (очень важно информации) на входе передать больше единицы на выход, там сами повлиять на слои, удущие после непосредственно следующим. К примеру, точка над чёрточкой отделяет букву L от буквы i, а информация одного пикселя влияет на принятия решения на выходе, поэтому важно не потерять этот признак и передать его на последний уровень. Разновидностей функций активации не так много – их ограничивает требования к простоте обучения, когда требуется взять производную. Так сигмойда f после произвольно превращается в