I want to understand how weight decay (L2 penalty) is working:
`torch.optim.Adam(params , lr=0.001 , betas=(0.9 , 0.999) , eps=1e-08 , weight_decay=0 , amsgrad=False ).
How L2 penalty actually work during optimization?