应用AI找出通过迭代优化功能的参数

时间:2019-09-23 11:26:57

标签: python machine-learning reinforcement-learning

我对机器学习非常陌生,我想在我的一个项目中实现它,使它变得更聪明。我编写了以下脚本,该脚本代表了我一直在研究的一种更简单的方案。这么长的解释可能会让人感到恐惧,但我只是想使其尽可能清楚。

基本上,我的问题是以下问题,我有两个函数 y1 y2 ,我想找出alpha1和alpha2的值,它们将最大化功能,只有从经验中学习才能做到这一点。因此,首先,将 alpha1 alpha2 设置为0,然后,我为每个具有正态分布的迭代生成100个示例,并使用此DumbAI函数返回最大值我创建的-返回每次迭代的最大值-然后更新alpha的值,依此类推。我决定在此处不包括它,以避免重复说明,而是通过其他方法计算出的函数的最优值,发现它接近 9.725 。因此,我希望我的结果- data_yt_max -收敛到该值。

import numpy as np
from math import cos,exp


alpha_0 = [0,0]
nStep   = 10
np.random.seed(1)
sigma_alpha = np.deg2rad([1,1])
data_points = 100


alpha = alpha_0
def DataGeneration(alpha, data_points, sigma_alpha):
    data_yt= np.array([])
    data_alpha1 = np.random.randn(data_points)*sigma_alpha[0]+alpha[0]
    data_alpha2 = np.random.randn(data_points)*sigma_alpha[1]+alpha[1]
    for i in range(0,data_points):
        y1 = 5*cos(data_alpha1[i])
        y2 = 5 - 1*exp(-(data_alpha1[i]**2)/(np.deg2rad([10])**2))*cos(data_alpha2[i])
        yt = np.sum(y1+y2)
        data_yt = np.append(data_yt, yt)
    return data_yt, data_alpha1, data_alpha2

def DumbAI(data_yt, data_alpha1, data_alpha2):
    yt_max = data_yt.max()    
    ID = data_yt.argmax()
    alpha_1 = data_alpha1[ID]
    alpha_2 = data_alpha2[ID]
    alpha = alpha_1, alpha_2
    return yt_max, alpha

data_yt_max = np.array([])
for i in range(0,nStep):
    data_yt,data_alpha1,data_alpha2 = DataGeneration(alpha, data_points,sigma_alpha)
    yt_max, alpha = DumbAI(data_yt,data_alpha1,data_alpha2)
    data_yt_max = np.append(data_yt_max, yt_max)

好的,我实现了这个dumbAI算法,该算法只返回最大值。我现在想实施一些更高级的方法。这涉及到每次迭代的某种预测,并且能够以更少的迭代达到最佳值。

任何想法我该如何实施?欢迎任何帮助,甚至是阅读材料的建议。

希望我能做到精确而简洁。非常感谢您在此方面的帮助!

0 个答案:

没有答案