机器学习,神经网络算法笔记(草履虫都能看懂),简单的一批

机器学习笔记系列

可以从上至下按顺序看喔

有监督学习

含义

  • 给算法一个数据集,其中包含了正确的答案,告诉算法啥是对的啥是错的

  • 我们想要在监督学习中,对于数据集中的每个样本,我们想要算法预测,并得出正确答案

神经网络

人工神经元

  • image-20211031153723700
  • 上图中的x0是“偏置单元”, 上图名称为“带有sigmoid激活函数的人工神经元”,且为单个神经元
  • 激活函数:像sigmoid函数等一些非线性函数的别称
  • x为我们的输入单元,theta为我们的参数(权重)

神经网络

  • 神经网络是由多个神经元所构成的,如下图所示

  • image-20211031154859443
  • 其中的层一为输入层,层二为隐藏层,层三为输出层

  • 为什么叫隐藏层?

    • 因为该层的值在训练集里是看不到,所以叫隐藏层
    • 一个神经网络可拥有多个隐藏层,实际上除了输入层与输出层以外的都叫隐藏层
  • 既然隐藏层的值在训练集看不到,可以通过以下计算出隐藏层的值

    • a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
    • a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3) a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
    • a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3) a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
    • h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_\Theta(x)=a_1^{(3)}=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2^{(2)}+\Theta_{13}^{(2)}a_3^{(2)}) hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
    • 可以看出以上计算可以统一归一到一个矩阵的计算,我们可以将其向量化一下
      • Θ ( 1 ) = [ Θ 10 ( 1 ) Θ 11 ( 1 ) Θ 12 ( 1 ) Θ 13 ( 1 ) Θ 20 ( 1 ) Θ 21 ( 1 ) Θ 22 ( 1 ) Θ 23 ( 1 ) Θ 30 ( 1 ) Θ 31 ( 1 ) Θ 32 ( 1 ) Θ 33 ( 1 ) ] ,   X = [ x 0 x 1 x 2 x 3 ] ,   Z ( 2 ) = [ z 1 ( 2 ) z 2 ( 2 ) z 3 ( 2 ) ] ,   A ( 2 ) = [ a 0 ( 2 ) a 1 ( 2 ) a 2 ( 2 ) a 3 ( 2 ) ] \Theta^{(1)}=\begin{bmatrix}\Theta_{10}^{(1)}&\Theta_{11}^{(1)}&\Theta_{12}^{(1)}&\Theta_{13}^{(1)}\\\Theta_{20}^{(1)}&\Theta_{21}^{(1)}&\Theta_{22}^{(1)}&\Theta_{23}^{(1)}\\\Theta_{30}^{(1)}&\Theta_{31}^{(1)}&\Theta_{32}^{(1)}&\Theta_{33}^{(1)}\end{bmatrix},\ X=\begin{bmatrix}x_0\\x_1\\x_2\\x_3\end{bmatrix},\ Z^{(2)}=\begin{bmatrix}z_1^{(2)}\\z_2^{(2)}\\z_3^{(2)}\end{bmatrix},\ A^{(2)}=\begin{bmatrix}a_0^{(2)}\\a_1^{(2)}\\a_2^{(2)}\\a_3^{(2)}\end{bmatrix} Θ(1)= Θ10(1)Θ20(1)Θ30(1)Θ11(<
草履虫优化算法(Bacterial Foraging Optimization Algorithm, BFOA)是一种基于模拟自然环境中细菌觅食行为的优化算法。以下是简单的MATLAB实现框架: ```matlan function [x_best, f_best] = bfoa_optimizer(objfun, lowerBound, upperBound, n_bacteria, n_iterations) % 初始化参数 bacteria_pos = lowerBound + (upperBound - lowerBound) * rand(n_bacteria, 1); bacteria_vel = zeros(n_bacteria, 1); pheromone_matrix = ones(size(lowerBound)) / prod(size(lowerBound)); food_source = zeros(1, length(lowerBound)); % 初始食物分布均匀 % 主循环 for iter = 1:n_iterations % 寻找最佳食物源 f_values = objfun(bacteria_pos); food_source = f_values / sum(f_values); % 更新菌落位置 for i = 1:n_bacteria % 遗传移动 bacteria_new_pos = bacteria_pos(i) + bacteria_vel(i); bacteria_new_pos = max([lowerBound, min([bacteria_new_pos, upperBound])]); % 更新速度和位置 bacteria_vel(i) = bacteria_vel(i) + bacteria_new_pos - bacteria_pos(i); bacteria_pos(i) = bacteria_new_pos; % 吃掉部分食物 bacteria_pos(i) = bacteria_pos(i) + pheromone_matrix .* food_source; bacteria_pos(i) = max([lowerBound, min([bacteria_pos(i), upperBound])]); end % 更新信息素矩阵 pheromone_matrix = pheromone_matrix * (1 - decay_rate) + (sum(bacteria_pos, 2) ./ n_bacteria) * release_rate; % 记录并显示最佳解 x_best = bacteria_pos(min(f_values)); f_best = f_values(min(f_values)); fprintf('\nIteration %d: Best Fitness = %.4f at position %s\n', iter, f_best, mat2str(x_best)); end end ``` 这里`objfun`是你要优化的目标函数,`lowerBound`和`upperBound`是搜索空间的边界,`n_bacteria`是细菌的数量(种群规模),`n_iterations`是迭代次数。`decay_rate`和`release_rate`是信息素更新的衰减率和释放率,需根据实际应用调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值