[Notas de lectura] algoritmo de sistema de la práctica recomendación (a)

El enfoque aquí es hacer una lectura de los algoritmos de filtrado colaborativo, y más importante para mí algo de conocimiento.

Hay pytorch en alguna función antes de su introducción. .

 


 

función de pérdida

errores cuadráticos medios

El método de mínimos cuadrados: método de regresión lineal. En caso de que todo ajuste de curva y la distancia mínima entre el punto de la línea de regresión.

uso general métrica distancia euclídea.

$ L (Y | f (X)) = \ sum \ limits_ {N} (Yf (X)) ^ {2} $

 

registrar la pérdida de la función logarítmica: función de pérdida de regresión logística es la pérdida de la función logarítmica.

Muestra obedecer la distribución de Bernoulli se asume, y luego encontrar la función de verosimilitud, entonces el número de valor extremo.

$ L (Y | f (X)) = -logP (Y | X) $

 

la pérdida de la función exponencial: AdaBoost es función de pérdida exponencial.

$ L (Y | f (X)) = exp [-yf (x)] $

 

CÓDIGO

Importación de la antorcha
 de torch.autograd importación variable
 de importación torch.nn AS NN
 importación torch.nn.functional AS F. 

de ejemplo = Variable (torch.ones (2,2 y )) 
A = torch.Tensor (2,2 y ) 
A [0,0 ] = 0 
A [0, 1] 1 =.. 
A [ 1,0] 2 = 
A [ 1,1] = 3. 
objetivo = variable (A)
 # la muestra: [[1,1], [1,1]] 
# objetivo: [[0,1], [2,3]] 


# uso básico 
Criterio LossCriterion = () # constructor tiene sus propios parámetros 
Pérdida = Criterion (X, Y)       #También pide los parámetros estándar 
# resultados calculados se han tomado a un promedio mini-lote 


# L1Loss 
# error absoluto medio de valores de predicción y el valor verdadero de 
Criterion = nn.L1Loss () 
Pérdida = Criterion (Muestra, objetivo)
 # . 1 


# SmoothL1Loss 
# HuberLoss, error (-1,1) la pérdida de la cuadratura, LL otras pérdidas 
Criterio = nn.SmoothL1Loss () 
pérdida = Criterion (Muestra, objetivo)
 # 0.625 


# MSELoss 
# cuadrados y cuadrado entre las pérdidas, el valor predicho y el valor verdadero la media 
Criterio = nn.MSELoss () 
Pérdida = Criterion (Muestra, objetivo)
 # de 1,5 


# nn.NLLLoss 
#负对数似然损失函数
# pérdida (x, clase) = -x [clase] 
# pérdida (x, clase) = -weights [clase] * x [Clase] pesos被指定

m = nn.LogSoftmax () 
pérdida = nn.NLLLoss ()
 # de entrada es de tamaño nBatch x nClasses = 3 x 5 
de entrada = torch.autograd.Variable (torch.randn (3, 5), requires_grad = True)
 # cada elemento de objetivo tiene que tener 0 <= valor <nclasses 
target = torch.autograd.Variable (torch.LongTensor ([1, 0, 4 ])) 
de salida = pérdida (m (entrada), objetivo) 
output.backward ()

 

 


 

optimización

SGD: descenso de gradiente estocástico.

Pequeñas cantidades de cada gradiente iteración se calcula, utilizando la gran cantidad de datos en el conjunto de datos

 

 

 

Momentum: aprovechando el impulso de SGD.

A través de la acumulación de impulso a medida que el uso de gradiente.

 

 

AdaGrad: el aprendizaje de las limitaciones de tasa.

Adecuado para la manipulación de gradiente escasa, más sensibles a parámetro global tasa de aprendizaje.

 

 

Adam: ajustar dinámicamente cada parámetro de tasa de aprendizaje y segundo orden momentos de primer orden se estima por gradiente.

Después de la corrección de desplazamiento, cada iteración la tasa de aprendizaje tiene un rango definido, el valor del parámetro es relativamente estable.

requisitos de memoria pequeñas para grandes conjuntos de datos y espacio de alta dimensión, también se aplica a la mayoría de optimización no convexa.

 

 

CÓDIGO

Importación torch.optim 

# uso 
Optimizer = optim.SGD (model.parameters (), LR = 0,01, Momentum = 0,9 ) 
Optimizer = optim.Adam ([var1, var2], LR = 0,0001 ) 

# clase base 
torch.optim.Optimizer (params, por defecto)
 # params: variable o dict de iterable, especifican qué parámetros deben optimizarse 
# defecto: contiene las opciones de optimización por defecto diccionario 

# método: 
load_state_dict (state_dict) # carga de estado optimizador 
state_dict ()                 # estado: Guardar optimización dict estado, param_groups: todos los parámetros establecidos 
zero_grad ()                  # vació gradiente optimizado de variable 
optimizer.step ()             # única optimización
optimizer.step (cierre)      # repite una pluralidad de veces que la función de cálculo, pasando el cierre, las necesidades de cierre para ser vaciados. 
para la ENTRADA, objetivo en el conjunto de datos:
     DEF cierre (): 
        optimizer.zero_grad () 
        la salida = Modelo (INPUT) 
        Pérdida = loss_fn (la salida, destino) 
        loss.backward () 
        de retorno Pérdida 
    optimizer.step (cierre) 



# SGD 
torch.optim. la SGD (los params, LR = 0,01, 0 = impulso, utilice la amortiguación = 0, 0 = weight_decay, Nesterov = Falso)
 # los params: parámetros para ser optimizados 
# LR (un flotador): aprender tasa 
# impulso (un flotador, opcional): el factor de impulso ( el valor por defecto es 0) 
#de amortiguación (float, opcional): impulso factor inhibidor (por defecto 0) 
# weight_decay (un flotador, opcional): amortiguación peso (pena L2) (por defecto 0) 
# Nesterov (BOOL, opcional): Momentum Nesterov ( el valor predeterminado es Falso) 

# Adagrad 
torch.optim.Adagrad (los parametros, LR = 0,01, lr_decay = 0, weight_decay = 0)
 # lr_decay (un flotador, opcional): el aprendizaje de la caries tasa (por defecto 0) 

# Adam 
torch.optim.Adam (los params, LR = de 0,001, betas, = (0,9, 0,999), EPS = 1E-08, weight_decay = 0)
 # betas, (tupla [un flotador, un flotador], opcional): medios para calcular un promedio de funcionamiento de la plaza del gradiente y gradiente coeficiente (por defecto: 0.9,0.999) 
# EPS (un flotador, opcional): con el fin de aumentar la estabilidad de la entrada numérica se añade a la denominador en (por defecto: 1e-8)

 

Supongo que te gusta

Origin www.cnblogs.com/Asumi/p/12470611.html
Recomendado
Clasificación