深度学习与炼丹。 经典网络 AlexNet 第一层的卷积内核是 11x11 像素。 为什么是 11 不是 10,不是 12?不知道,作者写论文的时候也没讲。 为什么有 9 层,为什么第二层就变成 5x5,后面又变成 3x3 了?作者也没说。 甚至,为什么这个内核的大小越来越小也没有交代。 深度学习像一剂成分复杂、原理不明的药。 卷积架构 适合图像处理,RNN & Transformer 架构适合处理语言。 实践中,根据经验多试几个,哪个网络效果更好就用那个。
使用 Kaggle 的目的主要是将技能落在实处,防止练就一身屠龙之技。 机器学习最大的幻觉就是觉得自己什么都懂了,但等到真的使用时发现并不奏效,而 Kaggle 是一个低成本的应用机器学习的机会。
工业界百分之六十的时间都在清理数据,这和学术界干净且规则化的现成数据完全不同。
一定要学习优质资源,而不是不分青红皂白的学习。
获取数据的方式主要有三种:开放数据(以学术界开放为主,如 ImageNet 和 LFW)、第三方数据公司的付费数据和结合自身业务产生的数据。
微积分:MIT 18.01, MIT 18.02 线性代数:MIT 18.06 概率论与数理统计:MIT 6.041 凸优化:CVX101
建议可以从吴恩达 / 李宏毅的课程入门,看完后可进一步的根据自己的研究方向选择,比如 CV 方向的可以看李飞飞的 CS231n 课程,最后再直接上手 Pytorch 去学习官方示例,把代码跑起来。
深度学习与计算机视觉—斯坦福 CS231n https://liumin.blog.csdn.net/article/details/125546056 通道洗牌、变形卷积核、可分离卷积?盘点卷积神经网络中十大令人拍案叫绝的操作。 https://www.jianshu.com/p/71804c97123d
胡浩基?李航 . 统计学习方法 ?,周志华 . 机器学习 ?
学习计划:
第一周的完成了。该第二周了。 第二周 3.1 - 5.7 第三周 6.1 - 7.4 第四周 8.1 - 8.7 第五周 9.1 - 9.8 第六周 10.0 - 11.5 第七周 12.1 - 12.6 第八周 13.1 - 14.7 第九周 15.1 - 16.6 第十周 17.1 - 19.1
一个别人写的科研经验总结:https://github.com/pengsida/learning_research。
科研基础
快速了解机器学习所需要的数学知识,建议学习《Mathematics for Machine Learning》一书。
机器学习:推荐国立台湾大学李宏毅机器学习课程 https://www.bilibili.com/video/BV1Wv411h7kN?spm_id_from=333.337.search-card.all.click,清华大学大佬白板推导系列 https://www.bilibili.com/video/BV1aE411o7qd?spm_id_from=333.337.search-card.all.click。
深度学习:推荐 Google 研究科学家 Ian Goodfellow(Generative Adversarial Nets 提出者)的花书《Deep Learning》(有中文译本 人民邮电出版社),斯坦福大学李飞飞(ImageNet 的提出者)老师的 cs231n 计算机视觉课程 https://www.bilibili.com/video/BV1nJ411z7fe。
Jakub Tomczak《深度生成建模》讲座报告与视频:https://www.bilibili.com/video/BV1pb4y1s7hS/?spm_id_from=333.337.search-card.all.click&vd_source=cd39e17f789bd6d503b915533f2c2237
电子书 Deep Generative Modeling:https://link.springer.com/book/10.1007/978-3-030-93158-2
这些深度生成模型中,重点掌握:
GAN(Generative Adversarial Networks,生成对抗网络)
学习 GAN 的原理,可以看 CS231n、李宏毅机器学习相关视频,或者搜一些博客等。
跑通 DCGAN 的代码,https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html
读 pix2pix 跟 CycleGAN 这两篇论文,弄清楚原理
跑通 pix2pix 跟 CycleGAN 代码,https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
学习 StyleGAN 与 GAN Inversion、GAN Prior 技术原理
英语
Python 实现。
首先,我们将创建一个以参数 θ 为特征函数的代价函数 \(J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{ { {\left( { {h}_{\theta }}\left( { {x}^{(i)}} \right)-{ {y}^{(i)}} \right)}^{2}}}\)
其中: \({ {h}_{\theta }}\left( x \right)={ {\theta }^{T}}X={ {\theta }_{0}}{ {x}_{0}}+{ {\theta }_{1}}{ {x}_{1}}+{ {\theta }_{2}}{ {x}_{2}}+...+{ {\theta }_{n}}{ {x}_{n}}\)
# 计算代价函数函数。
def computeCost(X, y, theta):
inner = np.power(((X * theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))
# 批量梯度下降
# alpha -- 学习速率
# iters -- 要执行的迭代次数
def gradientDescent(X, y, theta, alpha = 0.01, iters = 1000):
temp = np.matrix(np.zeros(theta.shape)) # 跟 theta 一样的矩阵
parameters = int(theta.ravel().shape[1]) # theta 个数,ravel() 将数组维度拉成一维数组
cost = np.zeros(iters) # 初始化 cost 数组。
for i in range(iters):
error = (X * theta.T) - y
for j in range(parameters):
term = np.multiply(error, X[:,j])
temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))
theta = temp
cost[i] = computeCost(X, y, theta)
return theta, cost
# 多变量线性回归
# 预处理步骤 - 特征归一化
def orgfunc(data2):
data2 = (data2 - data2.mean()) / data2.std()
data2.head()
# scikit-learn 的线性回归算法
from sklearn import linear_model
model = linear_model.LinearRegression()
model.fit(X, y)
# 正规方程
def normalEqn(X, y):
theta = np.linalg.inv(X.T@X)@X.T@y # X.T@X 等价于 X.T.dot(X)
return theta