Eu tenho uma entrada que é uma lista e a saída é o máximo dos elementos da lista de entrada.
O aprendizado de máquina pode aprender uma função que sempre seleciona o máximo de elementos de entrada presentes na entrada?
Isso pode parecer uma pergunta bastante básica, mas pode me dar uma compreensão do que o aprendizado de máquina pode fazer em geral. Obrigado!
machine-learning
deep-learning
user78739
fonte
fonte
Respostas:
Talvez , mas observe que este é um daqueles casos em que o aprendizado de máquina não é a resposta . Há uma tendência de tentar aprender o aprendizado de máquina em casos em que as soluções baseadas em regras padrão são mais rápidas, mais simples e geralmente a escolha certa: P
Edit : Eu originalmente escrevi isso como "Sim, mas note que ...", mas comecei a duvidar de mim mesmo, nunca tendo visto isso. Eu tentei esta tarde e é certamente factível:
A saída é 0.74576, por isso está localizando corretamente o máximo de 74,5% do tempo. Não tenho dúvidas de que isso poderia ser melhorado, mas, como digo, esse não é um caso que eu recomendaria para o ML.
EDIT 2 : Na verdade, eu re-executei esta manhã usando o RandomForestClassifier do sklearn e o desempenho foi significativamente melhor:
E a pontuação aqui é de 94,4% das amostras com o máximo identificado corretamente, o que é realmente muito bom.
fonte
@
, como em@Marco13
). Com relação à pergunta: acho que sua afirmação "aprendizado de máquina não é a resposta" deixa claro. Receio principalmente que muitas pessoas não apliquem o escrutínio apropriado ao usar ML / DL / NNs e, principalmente, quando encontram algo que parece "resolver seu problema", sem entender por que parece fazê-lo. e, portanto, sem reconhecer quando uma "solução" é apenas um artefato de um processo não tão bem compreendido.Sim. Muito importante, você decide a arquitetura de uma solução de aprendizado de máquina. Arquiteturas e procedimentos de treinamento não se escrevem; eles devem ser projetados ou modelados e o treinamento segue como um meio de descobrir uma parametrização da arquitetura adequada a um conjunto de pontos de dados.
Você pode construir uma arquitetura muito simples que realmente inclua uma função máxima:
onde um e b são aprendidas parâmetros.
Dadas amostras de treinamento suficientes e uma rotina de treinamento razoável, essa arquitetura muito simples aprenderá muito rapidamente a definir a como 1 eb para zero para sua tarefa.
O aprendizado de máquina geralmente assume a forma de entreter várias hipóteses sobre caracterização e transformação de pontos de dados de entrada e aprender a preservar apenas as hipóteses correlacionadas com a variável de destino. As hipóteses são codificadas explicitamente na arquitetura e subfunções disponíveis em um algoritmo parametrizado ou como as suposições codificadas em um algoritmo "sem parâmetros".
Por exemplo, a escolha de usar produtos pontuais e não linearidades, como é comum na rede neural de baunilha ML, é um tanto arbitrária; ele expressa a hipótese abrangente de que uma função pode ser construída usando uma estrutura de rede composicional predeterminada de transformações lineares e funções de limite. Diferentes parametrizações dessa rede incorporam diferentes hipóteses sobre quais transformações lineares usar. Qualquer caixa de ferramentas pode ser usada e o trabalho de um aprendiz de máquina é descobrir através de diferenciação ou tentativa e erro ou algum outro sinal repetível que funções ou recursos em sua matriz minimizem melhor uma métrica de erro. No exemplo dado acima, a rede aprendida simplesmente se reduz à função máxima em si, enquanto uma rede indiferenciada poderia "aprender" uma função mínima. Essas funções podem ser expressas ou aproximadas por outros meios, como na função de regressão da rede linear ou neural em outra resposta. Em suma, depende realmente de quais funções ou peças LEGO você possui em sua caixa de ferramentas de arquitetura ML.
fonte
max()
(a partir de dados rotulados). Eles não disseram " Dado que você já temmax()
um bloco de construção"Sim - o aprendizado de máquina pode aprender a encontrar o máximo em uma lista de números.
Aqui está um exemplo simples de aprender a encontrar o índice do máximo:
fonte
Algoritmos de aprendizagem
Em vez de aprender uma função como um cálculo feito por uma rede neural de feed-forward, existe todo um domínio de pesquisa sobre algoritmos de aprendizagem a partir de dados de amostra. Por exemplo, pode-se usar algo como uma máquina de Tural Neural ou algum outro método em que a execução de um algoritmo é controlada pelo aprendizado de máquina em seus pontos de decisão. Algoritmos de brinquedo, como encontrar um máximo, classificar uma lista, reverter uma lista ou filtrar uma lista, são comumente usados como exemplos na pesquisa de aprendizado de algoritmos.
fonte
Excluirei designs educados da minha resposta. Não, não é possível usar um fora da abordagem de aprendizagem máquina de caixa (ML) para totalmente representar a função máxima para arbitrárias listas com precisão arbitrária. O ML é um método baseado em dados e é claro que você não poderá aproximar uma função em regiões onde não possui nenhum ponto de dados. Portanto, o espaço de possíveis observações (que é infinito) não pode ser coberto por observações finitas.
Minhas declarações têm uma base teórica com o Teorema Universal de Aproximação de Cybeko para redes neurais. Vou citar o teorema da Wikipedia:
Se o seu espaço de observações for compacto, você poderá aproximar a função máxima com um conjunto de dados finitos. Como a resposta mais votada deixou claro, você não deve reinventar a roda!
fonte
Aqui está uma expansão no meu comentário. Para prefácio, absolutamente @DanScally está certo que não há razão para usar o ML para encontrar o máximo de uma lista. Mas acho que o seu "pode me dar uma compreensão do que o aprendizado de máquina pode fazer em geral" é razão suficiente para se aprofundar nisso.
Finalmente, para a pergunta subsequente: podemos treinar um NN para esse estado. A @DanScally nos iniciou; talvez conhecer a arquitetura teórica possa nos ajudar a trapacear na solução? (Observe que, se pudermos aprender / aproximar o conjunto específico de pesos acima, a rede terá um desempenho realmente fora do intervalo das amostras de treinamento.)
Caderno no github / Colab
fonte
Sim, mesmo que o aprendizado de máquina simples como os mínimos quadrados lineares comuns possa fazer isso se você usar alguma inteligência aplicada.
(Mas a maioria consideraria esse exagero bastante horrível).
(Assumirei que queremos encontrar o máximo de abs do vetor de entrada):
fonte