Ефикасността на всеки модел на машинно обучение може да се отдаде преди всичко на валидността на данните, използвани за обучение, и способността на модела да обобщава добре от тази информация. Следователно обучението на модел с най-ниска загуба при валидиране е критично. Като обучаваме модел ефективно, ние гарантираме, че моделът не е нито недостатъчно, нито прекалено подходящ.
Загубата при валидиране съответства на степента на грешки в извадка от набора за обучение, която не се използва във фазата на обучение и ни помага да измерим способността на модела да обобщава. Основната цел във всеки модел на машинно обучение е да се постигне най-ниска загуба при валидиране, което показва, че нашият модел се учи и обобщава добре.
Метод за запазване на модели с най-добра загуба при валидиране
Обучението на модел включва няколко итерации, известни също като епохи, и загубата при валидиране е различна за всяка епоха. Python предоставя няколко библиотеки като Keras, които съхраняват тези модели във всяка епоха. Можем да използваме функция, наречена ModelCheckpoint, за да запазим модела всеки път, когато загубата на валидиране се подобри от предишната.
from keras.callbacks import ModelCheckpoint # specify the path to save the model filepath="weights.best.hdf5" # initiate the ModelCheckpoint function checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min') # define the list of callbacks callbacks_list = [checkpoint] # fit the model model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, callbacks=callbacks_list, verbose=0)
Разбиране на кода: стъпка по стъпка
Нека преминем през кодовия фрагмент стъпка по стъпка, за да разберем всяка част:
1. Импортирайте функцията ModelCheckpoint от Keras.
2. Дефинирайте пътя на файла, където искате да запишете модела, като използвате формата .hdf5. Този формат е предназначен за съхраняване и организиране на големи количества данни.
3. Стартирайте функцията ModelCheckpoint. Тук наблюдаваме „val_loss“ с режим „min“, което показва, че се стремим да минимизираме тази стойност. С 'save_best_only=True' последният най-добър модел според наблюдаваното количество няма да бъде презаписан.
4. След това контролната точка се добавя към списъка с обратни повиквания. Други параметри на обучение като EarlyStopping също могат да бъдат включени в този списък.
5. След това моделът се обучава върху данните с помощта на model.fit(). Аргументът callbacks приема callbacks_list.
Кодът записва модела като „weights.best.hdf5“ във всяка епоха, където загубата при валидиране е минимална.
Ключови библиотеки на Python за запазване на модели
Python предоставя богата екосистема от библиотеки за запазване на модели за машинно обучение. Основно използваните са:
- Керас: Този API за невронни мрежи от високо ниво, способен да работи върху други API от по-ниско ниво като TensorFlow, позволява лесно и бързо прототипиране на модели за дълбоко обучение. Функцията ModelCheckpoint в Keras осигурява гъвкавост за наблюдение на различни параметри по време на процеса на обучение и запазване на модела или теглата на различни етапи.
- Tensorflow: Рамката за машинно обучение с отворен код на Python позволява на разработчиците да създават сложни ML модели с лекота. Той предоставя модул SavedModel, който е универсален сериализиращ формат за модели TensorFlow.
- Scikit-learn: Тази популярна библиотека на Python за машинно обучение предоставя помощни програми за запазване и зареждане на модели. Модулът Joblib обикновено се използва за сериализиране на обекти на Python с големи масиви numpy – често срещан сценарий в работните процеси за машинно обучение.
Изборът на библиотека до голяма степен зависи от изискванията на вашия проект, познанията ви с библиотеката и сложността на вашия модел. Независимо от това, Python предоставя достатъчно ресурси за обучение, оценка, запазване и зареждане на модели с лекота.