如果说的科学是专指自然科学的话,包含阴阳五行等的术数理论当然不属于,但要说它只属于哲学就错了, 因为它其实是一种解析客观事物方式,可以理解为形式科学,与数学与逻辑学是一样的。
庄子有云:“至人之用心若镜,不将不逆,应而不藏,故能胜物而不伤。”用心若镜的,静观万物,看透事物的本质,不要掺杂自己的情绪而影响认见,才能做到胜物不伤。
说起来不少顶着个砖家博士名头的,整天尽搞反传统煽情绪刷流量,博一时之名利,是不是已经失去了一个求知者的应有本分了?
那些整天反五行理论的就的那些人,看到这里不用不爽,因为接下来不但会让你们不爽,还想让你们感觉被扇了一嘴巴~~~~~~
^_^ 以上仅是开个玩笑,莫当真,欢迎大家讨论,提出建设性意见,现在来说正文:
在以前说过的回答里说过,五行的逻辑是强调的两两之间的关系,五行的关键,不在五行本身,金木水火土仅仅只是五个符号,你要将它们称之为abcde,或是大黄狗1号,大黄狗2号......都是可以的。
明白这个后,对五行关系建模,如果将它们看作每一个节点,两两节点之间的关系,可以表达得到:
而其中的箭头,可以理解为生克比的关系。
首先比如构建一张这样的散点图,产生简单的数据。
从-1到1随机生成100个点,y轴与x的关系是x的3次方,再加随机扰动,这样一个散点,是否能用五行关系网络模拟出来?
任意取一个激活函数,比如tannh,因为函数图像区域在-1~1区间,用它进行模拟比较方便,当然经过实验,使用其它激活函数也是可以的。
具体的元素间的关系,其实就是连接的权值,划分为生、受生、比、受克,克,当然这一切是人为来定义的,按值的所在区域划分就行了。
那么将上述的关系,创建一个输入与输出,制作成一个神经网络模型,成为这样:
顺便说一下,将关系图采用全连接网络进行表示,在直觉上其实是很容易想到的,但仅仅是想到还不够,需要更多深入研究才能挖掘出其中价值。
何恺明大神《深度学习网络架构新视角:通过相关图表达理解神经网络》一文中,将通过相关图表达理解神经网络。
这里只是做了一下反向思维,将五行关系图用全连接网络来进行。
所以,这显然可以构造一个网络出来,直接上代码验证就好:
import torch import torch.nn as nn import matplotlib.pyplot as plt from torch.autograd import Variable x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1) y = x.pow(3)+0.1*torch.randn(x.size()) class Net(nn.Module): def __init__(self,n_input,n_hidden,n_output): super(Net,self).__init__() self.hidden1 = nn.Linear(n_input,n_hidden,bias=False) self.hidden2 = nn.Linear(n_hidden,n_hidden,bias=False) self.predict = nn.Linear(n_hidden,n_output,bias=False) def forward(self,input): out = self.hidden1(input) out = torch.tanh(out) out = self.hidden2(out) out = torch.tanh(out) out = self.predict(out) return out net = Net(1,5,1) optimizer = torch.optim.SGD(net.parameters(),lr = 0.1) loss_func = torch.nn.MSELoss() for t in range(5000): prediction = net(x) loss = loss_func(prediction,y) optimizer.zero_grad() loss.backward() optimizer.step() if t%100 ==0: plt.cla() plt.scatter(x.data.numpy(), y.data.numpy()) plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5) plt.text(0, -1, 'Loss = %.4f' % loss.data, fontdict={'size': 20, 'color': 'red'}) plt.pause(0.05)
为了更准确的模拟,每一层中,将偏置bias设置成了False,这样可以更直接的使用激活函数来体现关系,这里迭代了1000次,而每100次显示一幅图,第100次时
第200次时,已经达到:
迭代5000次后,loss仅只有0.0095了,拟合的函数特征曲线也比较明显了:
即使是上述如果不是两层隐藏层,只使用一个隐藏层的话,同样也能实现收敛,只是收敛速度会慢上一些,从原理上来说,当然是得益于神经网络本身就有无限逼近任何函数的能力。
构成两个全连接层,模拟了五行关系,可以实现函数拟合,这只是一个非常简单的模型,在实际的场景中,五行生克会放入比这个复杂很多倍的符号运算体系中,也能快速逼近更高级函数表达。
在理解上来说,这个过程是符合人对五行生克的理解的,因为自输入层到两个隐藏层之间的过程,相当于人为逻辑分析事物五行的过程,经过两个隐藏层(相当于进入五行生克的关系图中进行运算)对生克变化的判断后,到输出层时,又相当于人对五行生克的结果的评估与经验性判读。
利益于现代工具与计算机技术的飞速发展,可以借此进行更细微的参数探查。
这里只是做了一个很浅薄的表达,实际上还有很多可以深入挖掘的东西,在此就不多提了。
比如说,五行关系是否有更好的表达方式?比如建立动力学运动微分方程,转换为激活函数,这样因为可以反向求导,所以进行梯度优化也会更加容易。
又比如,在一些理论体系中,复现成多层网络结构后,权重之间很多时候是共享的,虽然在深度神经网络中,看到过很多权重共享的例子,然而在这种场景下是否它依然有用?
再比如,通常在这些理论中,还涉及到周期的变换需要进行转换与引入,这些如何结合才能更好呢?
路漫漫其修远兮,吾将上下而求索,可有同道一同探索?