在人工智能和机器学习方面,有监督和无监督学习有什么区别?您能举例说明一个基本的,简单的解释吗?
artificial-intelligence machine-learning unsupervised-learning supervised-learning
我想设计一个带有一个(或多个)卷积层(CNN)和一个或多个完全连接的隐藏层的深网.
对于具有完全连接层的深度网络,在无人监督的预训练中有一些方法,例如,使用去噪自动编码器或RBM.
我的问题是:我如何实现(在theano中)卷积层的无监督预训练阶段?
我不希望完整的实现作为答案,但我希望链接到一个好的教程或可靠的参考.
python neural-network unsupervised-learning theano deep-learning
我最近研究过有监督学习和无监督学习.从理论上讲,我知道有监督意味着从标记数据集中获取信息而无监督意味着在没有给出任何标签的情况下对数据进行聚类.
但是,问题是我总是感到困惑,以确定在我的学习期间给定的例子是监督学习还是无监督学习.
谁能请一个现实生活中的例子?
machine-learning data-mining unsupervised-learning supervised-learning deep-learning
我正在尝试创建一个遗传算法来训练神经网络,目标是玩游戏蛇.
我遇到的问题是世代的适应性没有提高,它要么仍然保持在不给游戏任何输入的健身,或者只是在第一代之后变得更糟.我怀疑它是神经网络的一个问题,但我不知道它是什么.
24输入节点
2隐藏层
每层8个节点
4个输出节点(蛇可以采取的每个方向一个)
输入是蛇可以看到的每个方向的数组.对于每个方向,它检查距离与墙壁,水果或其自身的距离.最终结果是一个长度为的数组3*8 = 24.
权重和偏差是在创建网络时生成的-1到1之间的随机浮点数.
人口规模:50000
每代选择的父母:1000
每代保持最高:25000(新变量,看到更好的结果)
每个孩子的突变几率:5%
(我尝试了很多不同的尺寸比例,虽然我还不确定它的典型比例是多少.)
我正在使用单点交叉.每一组重量和偏差都在父母之间交叉,并传递给孩子(交叉的每个"版本"一个孩子).
我正在使用我认为轮盘选择来选择父母,我将在下面发布确切的方法.
蛇的适应性计算如下age * 2**score:(不再是更新中的更多信息),其中年龄是蛇存活了多少圈,而得分是它收集的果实数量.
下面是一些伪代码,试图总结我的遗传算法(应该)如何工作:
pop = Population(size=1000)
while True: # Have yet to implement a 'converged' check
pop.calc_fitness()
new_pop = []
for i in range(n_parents):
parent1 = pop.fitness_based_selection()
parent2 = pop.fitness_based_selection()
child_snake1, child_snake2 = parent1.crossover(parent2)
if rand() <= mutate_chance:
child_snake.mutate()
new_pop.append(child_snake1, child_snake2)
pop.population = new_pop
print(generation_statistics)
gen += 1
Run Code Online (Sandbox Code Playgroud)
这是我用来选择父级的方法:
def …Run Code Online (Sandbox Code Playgroud) python neural-network genetic-algorithm python-3.x unsupervised-learning
我正在寻找最先进的方法的概述
在时间数据中找到(任意长度的)时间模式
并且没有监督(没有标签).
换句话说,给定一个蒸汽/序列(可能是高维)数据,您如何找到最能捕获数据结构的公共子序列.
欢迎任何关于最新发展或论文(超出HMM,希望)的指示!
这个问题是否可以在更具体的应用领域中得到充分理解,例如
(我对检测已知模式,对序列进行分类或分段不感兴趣.)
pattern-recognition cluster-analysis machine-learning time-series unsupervised-learning
我的场景很简单:我有一堆新闻文章(目前约为1k),我知道有些文章涉及同一个故事/主题.我现在想根据共享的故事/主题对这些文章进行分组,即基于它们的相似性.
到目前为止我所做的是应用基本的NLP技术,包括删除词和删除词.我还计算了每篇文章的tf-idf向量,并且还可以基于这些tf-idf向量计算例如余弦相似度.但现在随着文章的分组我有点挣扎.我看到两种主要方式 - 可能是相关的 - 来做到这一点:
1)机器学习/聚类:我已经在现有的聚类库中玩了一些,或多或少的成功; 看到这里.一方面,诸如k-means的算法需要簇的数量作为输入,我不知道.其他算法需要指定的参数也不直观(对我而言).
2)图算法:我可以将我的数据表示为图表,其中文章是节点,加权adges表示文章之间的成对(余弦)相似性.有了它,例如,我可以首先删除低于某个阈值的所有边,然后可以应用图算法来查找强连通的子图.
简而言之,我不确定哪里最好离开这里 - 我在这个领域还很新.我想知道是否有一些最佳实践,或某些方法/算法可以(不)应用于某些场景的指南.
(编辑:忘了链接到我的相关问题)
nlp information-retrieval cluster-analysis machine-learning unsupervised-learning
我刚刚完成了Osvaldo Martin的Python书中的贝叶斯分析(理解贝叶斯概念和一些花哨的numpy索引的好书).
我真的想将我的理解扩展到贝叶斯混合模型,用于无监督的样本聚类.我所有的谷歌搜索都让我看到了Austin Rochford的教程,这本教程非常有用.我理解发生了什么,但我不清楚它如何适应群集(特别是使用群集分配的多个属性,但这是一个不同的主题).
我知道如何分配先验,Dirichlet distribution但我无法弄清楚如何获得集群PyMC3.看起来大多数mus会聚到质心(即我从中采样的分布方式),但它们仍然是分开的components.我考虑过weights(w在模型中)截止,但这似乎不像我想象的那样工作,因为多个components具有稍微不同的平均参数mus正在收敛.
如何从此PyMC3模型中提取聚类(质心)?我给了它最多的15组件,我想收敛3.在mus似乎是在正确的位置,但权重搞砸b他们被其他集群之间分配/ C,所以我不能用一个权重阈值(除非我把它们合并,但我不认为这是事情是这样的通常做完).
import pymc3 as pm
import numpy as np
import matplotlib.pyplot as plt
import multiprocessing
import seaborn as sns
import pandas as pd
import theano.tensor as tt
%matplotlib inline
# Clip at 15 components
K = 15 …Run Code Online (Sandbox Code Playgroud) python machine-learning bayesian unsupervised-learning pymc3
我正在使用卷积神经网络(无监督特征学习来检测特征+ Softmax回归分类器)进行图像分类.我已经完成了Andrew NG在这方面的所有教程.(http://sufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial).
我开发的网络有:
我已经学会了使用稀疏自动编码器将输入层连接到隐藏层的权重,因此具有400种不同的功能.
通过从任何输入图像(64x64)获取连续的8x8色块并将其输入到输入层,我得到400个大小(57x57)的特征图.
然后,我使用最大池与大小为19 x 19的窗口来获得400个大小为3x3的要素图.
我将此要素图提供给softmax图层,以将其分为3个不同的类别.
这些参数,例如隐藏层数(网络深度)和每层神经元数量,在教程中提出,因为它们已成功用于所有图像大小为64x64的特定数据集.
我想将它扩展到我自己的数据集,其中图像更大(比如400x400).我该如何决定
层数.
每层神经元的数量.
池化窗口的大小(最大池).
computer-vision neural-network unsupervised-learning autoencoder
树形图是与层次聚类算法一起使用的数据结构,其在树的不同"高度"处对聚类进行分组 - 其中高度对应于聚类之间的距离度量.
在从某些输入数据集创建树形图之后,通常还需要确定"切割"树状图的位置,这意味着选择高度使得仅低于该高度的聚类被认为是有意义的.
在剪切树状图的高度并不总是很清楚,但是存在一些算法,例如DynamicTreeCut算法,它试图以编程方式从树形图中选择有意义的聚类.
看到:
https://stats.stackexchange.com/questions/3685/where-to-cut-a-dendrogram
所以我一直在阅读DynamicTreeCut算法,以及该算法的Java实现.从逐步分解正在发生的事情的角度来看,我理解算法是如何工作的以及它在做什么.但是,我无法理解这个算法是如何做任何有意义的事情的.我想我在这里缺少一些关键概念.
通常,该算法在树形图上迭代"高度序列".我不确定,但我认为"高度序列"只是指树状图沿Y轴的值,即簇连接发生的各种高度.如果是这种情况,我们可以假设"高度序列"按升序排序.
然后算法要求获取"参考高度",l并从输入"高度序列"中的每个高度减去它.这为您提供了高度序列中D每个高度h[i]与参考高度之间差异()的向量l.
然后算法尝试找到"转换点" - 它们是差异向量中的点,其中D[i] > 0和D[i+1] < 0.换句话说,差异向量中的点,其中差值从正变为负.
就在这里,我完全迷失了.我不明白这些过渡点是如何有意义的.首先,我的理解是输入高度序列H只是树形图Y轴上的值.因此,高度序列H应按升序排列.因此,如何在差异向量中找到一个从正向过渡到负向的点?
例如:
假设我们的输入高度序列H是{1, 1.5, 2, 2.5, 3, 7, 9},我们的参考值l是平均高度(将是3.7).因此,如果我们D通过l从每个高度中减去来创建差异向量H,我们就会得到{-2.7, -2.2, -1.7, -1.2, -0.7, 3.3, 5.3}.很明显,这里没有过渡点,也没有过,因为差异向量中没有点D[i] …
algorithm cluster-analysis hierarchical-clustering dendrogram unsupervised-learning
主题建模可识别文档集合中主题的分布,从而有效地识别集合中的集群.那么说主题建模是一种进行文档聚类的技术是正确的吗?
python ×3
algorithm ×1
autoencoder ×1
bayesian ×1
data-mining ×1
dendrogram ×1
nlp ×1
pymc3 ×1
python-3.x ×1
theano ×1
time-series ×1