最小化梯度下降算法的成本

时间:2017-11-24 14:24:28

标签: python algorithm optimization backpropagation gradient-descent

我正在研究优化问题。我的函数是这样的:C=-σ(wx+b)+σ(wθz+b)其中σ是一个sigmoid函数。我在这里做的是找到wb的最佳值,以便我的费用C可以保持最接近零的最小值。

我假设x,θ和z为常数值,基于梯度算法,首先初始化w和b并计算成本,然后从反向传播更新w,b以获得更小的成本值(成本可以为负值) ,但我认为只有接近0才重要。)

我很困惑,因为我不断增加成本,我认为渐变有些不对劲。任何人都可以提供一些建议吗?

import numpy as np
import matplotlib.pyplot as plt

def sigmoid_prime(x):
    """ sigmoid derivative """
    return x * (1.0-x)

def sigmoid(x):
    return 1/(1 + np.exp(-x))

cost_list = []
x = 1
z = 7.5
w = 0.001
b = 0.01
theta = 0.002
lrt = 0.01

for i in range(50):
    y = sigmoid(w*x+b)
    fake = sigmoid(w*theta*z + b)
    cost = -y+fake
    #calculate gradient descent to update w,b 
    dw = - sigmoid_prime(y) * x +  sigmoid_prime(fake) * theta*z
    db = - sigmoid_prime(y) +  sigmoid_prime(fake)

    w += lrt * dw
    b += lrt * db

    cost_list.append(cost)

plt.plot(cost_list)
plt.show()

enter image description here

0 个答案:

没有答案