Galeria de mapas mentais Conhecimento teórico de aprendizagem profunda
Parte do conteúdo está recolhida e um total de 1.216 módulos estão incluídos. Baseado nos dois livros de Yasuki Saito "Introdução ao Aprendizado Profundo: Teoria e Implementação Baseada em Python" e "Aprendizado Profundo Avançado: Processamento de Linguagem Natural Autor: [Japonês] Yasuki Saito Tradutor: Lu Yujie". Este é o livro mais adequado para iniciar o aprendizado profundo que já li. Recomendo-o fortemente antes de estudar "Hands-On Deep Learning" de Li Mu! O conteúdo contido não requer nenhum conhecimento básico. É ensinado do zero e pode ser compreendido por alunos do ensino médio.
Editado em 2024-02-04 00:57:48이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
Conhecimento teórico de aprendizagem profunda
introdução
Conceitos Básicos
O problema de aprendizado profundo é um problema de aprendizado de máquina, que se refere a resumir regras gerais por meio de algoritmos a partir de exemplos limitados e aplicá-los a novos dados desconhecidos.
Ao contrário do aprendizado de máquina tradicional, os modelos usados no aprendizado profundo são geralmente mais complexos.
O fluxo de dados da entrada original para o destino de saída passa por vários componentes lineares ou não lineares. Cada componente processa informações e, por sua vez, afeta os componentes subsequentes.
Quando finalmente obtemos o resultado, não sabemos exatamente quanto cada componente contribui. Esta questão é chamada de contribuição Problema de alocação.
O problema de distribuição de contribuições também é frequentemente traduzido como problema de distribuição de crédito ou problema de distribuição de crédito.
O problema de alocação de contribuições é uma questão muito crítica, relacionada a como aprender os parâmetros de cada componente.
Atualmente, o modelo que melhor pode resolver o problema de distribuição de contribuições é a rede neural artificial (RNA).
Redes neurais e aprendizado profundo não são equivalentes. O aprendizado profundo pode usar modelos de redes neurais ou outros modelos (por exemplo, rede de crenças profundas é um modelo gráfico probabilístico).
IA
Conceitos básicos de IA
conceito inteligente
inteligência natural
definição
Refere-se ao poder e às habilidades comportamentais dos humanos e de alguns animais.
inteligência humana natural
É a capacidade abrangente dos seres humanos em compreender o mundo objetivo que se manifesta pelos processos de pensamento e atividades mentais.
Diferentes visões e hierarquias de inteligência
Visualizar
teoria da mente
A inteligência vem de atividades de pensamento
teoria do limite de conhecimento
A inteligência depende do conhecimento aplicável
teoria evolutiva
A inteligência pode ser alcançada pela evolução gradual
Hierarquia
Capacidades características incluídas na inteligência
Percepção
habilidades de memória e pensamento
aprendizagem e adaptabilidade
capacidade
Conceito de inteligência artificial
explicar
Use métodos artificiais para obter inteligência em máquinas
Estudar como construir máquinas ou sistemas inteligentes e simular e ampliar a inteligência artificial
Teste de Turing
Conteúdo básico da pesquisa de IA
A posição subjetiva da inteligência artificial
A interseção das ciências naturais e das ciências sociais
Núcleo: Pensamento e Inteligência
Disciplinas básicas: matemática, ciência do pensamento, informática
Pesquisa interdisciplinar com ciências do cérebro e ciências cognitivas
Pesquisa sobre métodos e tecnologias de simulação inteligente
percepção da máquina
Visão
audição
pensamento de máquina
aprendizado de máquina
comportamento da máquina
Classificação de domínio
Percepção: isto é, simular a capacidade de percepção humana de perceber e processar informações de estímulos externos (visuais e de fala, etc.). As principais áreas de pesquisa incluem processamento de informações de fala e visão computacional.
Aprendizagem: Simular a capacidade de aprendizagem humana, principalmente estudando como aprender com exemplos ou interagindo com o meio ambiente. As principais áreas de pesquisa incluem aprendizagem supervisionada, aprendizagem não supervisionada e aprendizagem por reforço.
Cognição: Simula habilidades cognitivas humanas. As principais áreas de pesquisa incluem representação de conhecimento, compreensão de linguagem natural, raciocínio, planejamento, tomada de decisão, etc.
história
Diferentes escolas de pesquisa em IA
simbolismo
Simbolismo, também conhecido como logicismo, escola de psicologia ou escola de informática. Analisando as funções da inteligência humana e depois realizando essas funções através de computadores.
Suposições básicas
As informações podem ser representadas por meio de símbolos
Os símbolos podem ser manipulados através de regras explícitas (como operações lógicas)
Os processos cognitivos humanos podem ser vistos como processos de manipulação simbólica. No período de raciocínio e no período de conhecimento da inteligência artificial, o método simbólico é mais popular e tem alcançado muitos resultados.
conexionismo
O conexionismo, também conhecido como escola biônica ou escola fisiológica, é um tipo de métodos e teorias de processamento de informações no campo das ciências cognitivas.
No campo da ciência cognitiva, o processo cognitivo humano pode ser considerado como um processo de processamento de informação. O conexionismo acredita que os processos cognitivos humanos são processos de processamento de informações em redes neurais compostas por um grande número de neurônios simples, em vez de operações simbólicas.
Portanto, a estrutura principal do modelo conexionista é uma rede interligada composta por um grande número de unidades simples de processamento de informações, que possui características de não linearidade, distribuição, paralelização, computação local e adaptabilidade.
Behaviorismo
O Behaviorismo acredita que a inteligência artificial deriva da cibernética.
Além do aprendizado profundo, existe atualmente outra tecnologia interessante no campo do aprendizado de máquina, o aprendizado por reforço.
Deixe um agente (Agente) realizar continuamente diferentes ações (Ação), mudar seu estado (Estado) e interagir com o ambiente (Ambiente) para obter diferentes recompensas (Recompensa). o agente pode aprender estratégias apropriadas por meio de tentativa e erro contínuos.
Redes neurais
rede neural cerebral
Redes neurais artificiais
A história do desenvolvimento das redes neurais
Modelo proposto
O período de 1943 a 1969 foi o primeiro período culminante do desenvolvimento das redes neurais. Durante este período, os cientistas propuseram muitos modelos de neurônios e regras de aprendizagem.
Em 1943, o psicólogo Warren McCulloch e o matemático Walter Pitts descreveram pela primeira vez uma rede neural artificial idealizada e construíram um mecanismo de computação baseado em operações lógicas simples. O modelo de rede neural que eles propuseram é chamado de modelo MP.
era do Gelo
De 1969 a 1983, foi o primeiro desenvolvimento de rede neural de baixo nível. período do vale. Durante esse período, a pesquisa em redes neurais esteve em estado de estagnação e declínio por muitos anos.
Em 1969, Marvin Minsky publicou o livro "Perceptron", apontando duas falhas principais das redes neurais: a primeira é que o perceptron não consegue lidar com o problema do loop XOR, a segunda é que os computadores da época não suportavam o processamento de grandes volumes; redes neurais. Requer poder de computação.
Em 1974, Paul Webos, da Universidade de Harvard, inventou o algoritmo de retropropagação (BP), mas ele não recebeu a atenção que merecia na época.
O renascimento causado pelo algoritmo de retropropagação
1983 ~ 1995. O algoritmo de retropropagação reacendeu o interesse em redes neurais.
O físico da Caltech, John Hopfield, propôs uma rede neural para memória associativa e cálculos de otimização, chamada rede Hopfield. A rede Hopfield obteve os melhores resultados da época no problema do caixeiro viajante e causou sensação.
David Rumelhart e James McClelland fornecem uma discussão abrangente sobre a aplicação do conexionismo a simulações computacionais de atividade neural e reinventam o algoritmo de retropropagação.
Declínio na popularidade
1995 ~ 2006. Máquinas de vetores de suporte e outros métodos mais simples (como classificadores lineares) estão gradualmente ultrapassando as redes neurais em popularidade no campo do aprendizado de máquina.
A ascensão do aprendizado profundo
2006 ~ agora. Redes neurais feedforward multicamadas podem ser pré-treinadas camada por camada e depois ajustadas usando o algoritmo de retropropagação. Aprenda de forma eficaz.
aprendizado de máquina
Pré-processamento de dados
Após o pré-processamento de dados, como remoção de ruído, etc. Por exemplo, na classificação de texto, remoção de palavras irrelevantes, etc.
Extração de recursos
Extraia alguns recursos eficazes de dados brutos. Por exemplo, na classificação de imagens, extraia bordas, transforme recursos invariantes de escala (SIFT), etc.
Transformação de recursos
Execute determinados processamentos nos recursos, como redução de dimensionalidade e aprimoramento de dimensionalidade. A redução da dimensionalidade inclui duas abordagens: Extração de recursos e Seleção de recursos. Os métodos de transformação de recursos comumente usados incluem análise de componentes principais (PCA), análise discriminante linear (Análise Discriminante Linear), etc.
prever
A parte central do aprendizado de máquina, fazer previsões por meio de uma função
Indica aprendizagem
Para melhorar a precisão do sistema de aprendizado de máquina, as informações de entrada são convertidas em recursos eficazes
Se houver um algoritmo que possa aprender automaticamente recursos eficazes e melhorar o desempenho do modelo final de aprendizado de máquina, esse tipo de aprendizado pode ser chamado de aprendizado de representação.
método de exibição
representação local
Uma maneira de representar cores é nomear cores diferentes com nomes diferentes.
A dimensão é alta e não pode ser expandida. A semelhança entre cores diferentes é 0.
representação distribuída
Valores RGB para representar cores
Para aprender uma boa representação semântica de alto nível (representação geralmente distribuída), geralmente é necessário começar com recursos de baixo nível e passar por várias etapas de transformação não linear para obtê-la.
aprendizagem profunda
etapa
Problema de distribuição de contribuições
Diferente da "aprendizagem superficial", o principal problema que a aprendizagem profunda precisa resolver é a distribuição da contribuição
Tomemos como exemplo o seguinte jogo de Go. Sempre que um jogo é jogado, o resultado final é uma vitória ou uma derrota. Pensaremos em quais movimentos levaram à vitória final e quais movimentos levaram à derrota final. Como avaliar a contribuição de cada movimento é o problema da distribuição das contribuições, que também é um problema muito difícil.
De certa forma, a aprendizagem profunda também pode ser considerada uma espécie de aprendizagem por reforço (RL). Cada componente interno não pode obter informações de supervisão diretamente, mas precisa obtê-las por meio das informações de supervisão finais (recompensa) de todo o modelo, e existe. Certo atraso.
O modelo de rede neural pode usar o algoritmo de retropropagação de erro, que pode resolver melhor o problema de distribuição de contribuição.
Aprendizagem de ponta a ponta
estilo de aprendizagem tradicional
Em algumas tarefas complexas, os métodos tradicionais de aprendizado de máquina precisam cortar artificialmente a entrada e a saída de uma tarefa em muitos submódulos (ou vários estágios), e cada submódulo é aprendido separadamente.
Por exemplo, uma tarefa de compreensão de linguagem natural geralmente requer etapas como segmentação de palavras, marcação de classes gramaticais, análise sintática, análise semântica e raciocínio semântico.
Existem dois problemas com esta forma de aprender
Primeiro, cada módulo precisa ser otimizado separadamente, e seus objetivos de otimização e os objetivos gerais da missão não têm garantia de consistência.
A segunda é a propagação de erros, ou seja, erros na etapa anterior terão grande impacto nos modelos subsequentes. Isso aumenta a dificuldade de aplicação prática dos métodos de aprendizado de máquina.
Nova forma de aprender
A aprendizagem ponta a ponta, também conhecida como treinamento ponta a ponta, refere-se ao objetivo geral de otimizar diretamente a tarefa sem realizar treinamento em módulos ou etapas durante o processo de aprendizagem.
Geralmente, não há necessidade de fornecer explicitamente as funções dos diferentes módulos ou estágios, e nenhuma intervenção humana é necessária no processo intermediário.
A maior parte do aprendizado profundo usando modelos de redes neurais também pode ser considerada um aprendizado ponta a ponta.
Estruturas de aprendizagem profunda comumente usadas
Theano: Um kit de ferramentas Python da Universidade de Montreal, usado para definir, otimizar e executar com eficiência o projeto Theano, está atualmente fora de manutenção. Os dados da matriz multidimensional correspondem a expressões matemáticas. Theano pode usar GPUs e símbolos eficientes de forma transparente diferencial.
Caffe: O nome completo é Arquitetura Convolucional para Incorporação Rápida de Recursos. É uma estrutura de computação para modelos de rede convolucionais. A estrutura de rede a ser implementada pode ser especificada no arquivo de configuração e não requer codificação. Caffe é implementado em C e Python e é usado principalmente para visão computacional.
TensorFlow: um kit de ferramentas Python desenvolvido pelo Google que pode ser executado em qualquer dispositivo com CPU ou GPU. O processo de cálculo do TensorFlow é representado por meio de gráficos de fluxo de dados. O nome do Tensor Flow vem do fato de que o objeto de operação em seu processo de cálculo é um array multidimensional, ou seja, um tensor.
Chainer: Uma das primeiras estruturas de rede neural que usa gráficos de computação dinâmica. Sua principal equipe de desenvolvimento é a Preferred Networks, uma startup de aprendizado de máquina do Japão. Em comparação com os gráficos de cálculo estáticos usados pelo Tensorflow, Theano, Caffe e outras estruturas, os gráficos de cálculo dinâmico podem construir gráficos de cálculo dinamicamente em tempo de execução, portanto, são muito adequados para algumas tarefas complexas de tomada de decisão ou raciocínio.
PyTorch5: Uma estrutura de aprendizado profundo desenvolvida e mantida pelo Facebook, NVIDIA, Twitter e outras empresas. Seu antecessor é o Torch6 da linguagem Lua. PyTorch também é um framework baseado em gráficos de computação dinâmica, que apresenta vantagens óbvias em tarefas que exigem alteração dinâmica da estrutura das redes neurais.
Organização deste livro
perceptron
Um perceptron é um algoritmo com entradas e saídas. Dada uma entrada, um determinado valor será gerado.
O perceptron define pesos e tendências como parâmetros
Circuitos lógicos como portas AND e portas OR podem ser representados usando perceptrons.
Uma porta XOR não pode ser representada por um perceptron de camada única.
Uma porta XOR pode ser representada usando um perceptron de 2 camadas
Os perceptrons de camada única podem representar apenas espaços lineares, enquanto os perceptrons de múltiplas camadas podem representar espaços não lineares.
Um perceptron de 2 camadas pode (em teoria) representar um computador.
Redes neurais
Perceptrons e redes neurais
"Perceptron ingênuo" refere-se a uma rede de camada única e um modelo que usa a função degrau como função de ativação.
"Perceptron multicamadas" refere-se a uma rede neural, ou seja, uma rede multicamadas que utiliza funções de ativação suave, como a função sigmóide ou a função ReLU.
Operação: produto interno da rede neural
Y = np.ponto(X, W)
As redes neurais podem ser implementadas de forma eficiente usando operações matriciais.
Camada afim
A operação de produto matricial realizada na propagação direta da rede neural é chamada de "transformação afim" no campo da geometria.
A transformação afim inclui uma transformação linear e uma tradução, que correspondem respectivamente à operação de soma ponderada e à operação de deslocamento da rede neural.
Y = sigmóide (Y)
camada de saída
Função de ativação: a função de identidade é usada para problemas de regressão e a função softmax é usada para problemas de classificação.
Função de identidade
O sinal de entrada será emitido inalterado
função softmax
Suponha que a camada de saída tenha n neurônios no total e calcule a saída yk do k-ésimo neurônio.
Características: A soma dos valores de saída da camada de saída é 1
Nota: problemas de estouro
quantidade
Problema de classificação
Geralmente definido para o número de categorias
Reconhecimento de dígitos manuscritos
A camada de entrada possui 28*28=784 neurônios e a camada de saída possui 10 neurônios. Existem também duas camadas ocultas e o número de neurônios pode ser qualquer valor.
Processamento em lote
Insira vários conjuntos de dados de uma só vez
Aprendizagem de redes neurais
função de perda
Apresente conceitos
Ao procurar parâmetros ideais (pesos e vieses), você está procurando parâmetros que tornem o valor da função de perda o menor possível, então você precisa calcular as derivadas dos parâmetros (o gradiente para ser mais preciso)
Por que não usar diretamente a precisão do reconhecimento como indicador?
A derivada do parâmetro se tornará 0 na maioria dos lugares
O mesmo vale para funções de etapa como funções de ativação
tipo
erro quadrático médio
erro de entropia cruzada
minilote
Extraia alguns dados de teste
gradiente
O vetor resumido pelas derivadas parciais de todas as variáveis é chamado de gradiente
A direção indicada pelo gradiente é a direção na qual o valor da função em cada ponto diminui mais.
hiperparâmetros
Configuração manual
taxa de aprendizagem f
tamanho do minilote
Tempos de atualização iters_num
treinamento obtido
Peso w e viés teta
Redes neurais
O gradiente da função de perda em relação aos parâmetros de peso
época
Número de ciclos/tamanho do minilote
Descida Gradiente Estocástica (SGD)
Execute a descida gradiente em dados selecionados aleatoriamente
método de retropropagação de erro
Embora a diferenciação numérica seja simples e fácil de implementar, sua desvantagem é que seu cálculo é demorado. Existe um método que pode calcular com eficiência o gradiente dos parâmetros de peso: método de retropropagação de erro
Gráfico computacional
Ao usar gráficos de cálculo, você pode compreender intuitivamente o processo de cálculo
A propagação direta de gráficos computacionais realiza cálculos gerais. Ao retropropagar o gráfico computacional, as derivadas de cada nó podem ser calculadas
O termo de erro da camada l pode ser calculado pelo termo de erro da camada l 1 Obtido, esta é a retropropagação do erro.
Fórmula
calcular
A quantidade de amarelo é o valor obtido durante a retropropagação
A quantidade verde é uma quantidade conhecida
Ao implementar os elementos constituintes de uma rede neural como camadas, os gradientes podem ser calculados de forma eficiente
Ao comparar os resultados obtidos pela diferenciação numérica e o método de retropropagação de erro, você pode confirmar se a implementação do método de retropropagação de erro está correta (confirmação de gradiente)
Vídeo de referência
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
rede neural convolucional
Tudo deve ser o mais simples possível, mas não muito simples. [Albert Einstein]
todo o quadro
Comparado
Rede baseada em camada totalmente conectada (camada afim)
Rede baseada em CNN
ordem de links
Convolução[camada de convolução]-ReLU-(Pooling[camada de pooling])
A camada próxima à saída usa a combinação anterior Affine [transformação afim] - ReLU
A camada de saída final usa a combinação anterior Affine-Softmax
camada de convolução
Conceito de convolução
Problemas com a camada totalmente conectada
A forma dos dados é "ignorada". A imagem geralmente é uma forma tridimensional na altura, comprimento e direções do canal, mas os dados tridimensionais precisam ser achatados em dados unidimensionais durante a entrada.
A imagem tem uma forma tridimensional e deve conter informações espaciais importantes.
Pixels espacialmente adjacentes têm valores semelhantes
Cada canal do RBG está intimamente relacionado entre si.
Há pouca correlação entre pixels distantes
A camada convolucional pode manter a forma inalterada
definição
Os dados de entrada e saída da camada de convolução são chamados de mapas de recursos
Os dados de entrada da camada convolucional são chamados de mapa de recursos de entrada
Os dados de saída são chamados de mapa de recursos de saída
Operação de convolução
A operação de convolução é equivalente à operação de filtro no processamento de imagens
A principal função da convolução é deslizar um núcleo de convolução (ou seja, filtro) em uma imagem (ou algum recurso) e obter um novo conjunto de recursos por meio da operação de convolução.
bidimensional
Dada uma imagem X ∈ R(M×N) e um filtro W ∈ R (m×n), geralmente m << M, n << N, a convolução é
tridimensional
Correlação
No processo de cálculo da convolução, muitas vezes é necessário inverter o núcleo da convolução.
Flip é inverter a ordem em duas dimensões (de cima para baixo, da esquerda para a direita), ou seja, girar 180 graus.
Em termos de implementação específica, são utilizadas operações de correlação cruzada em vez de convoluções, o que reduzirá algumas operações desnecessárias ou sobrecarga.
Correlação cruzada é uma função que mede a correlação entre duas séries, geralmente implementada usando um cálculo de produto escalar de janela deslizante.
Dada uma imagem X ∈ R(M×N) e um kernel de convolução W ∈ R (m×n), sua correlação cruzada é
A diferença entre correlação cruzada e convolução é apenas se o kernel da convolução é invertido. A correlação cruzada também pode ser chamada de convolução não invertida.
A convolução é usada em redes neurais para extração de recursos. O fato de o kernel de convolução ser invertido não tem nada a ver com sua capacidade de extração de recursos. Especialmente quando o kernel de convolução é um parâmetro que pode ser aprendido, a convolução e a correlação cruzada são equivalentes.
Variantes de convolução
Preenchimento zero
Para manter o tamanho do espaço constante, os dados de entrada precisam ser preenchidos
comprimento da passada
O intervalo de posições em que o filtro é aplicado é chamado de passada
Convoluções comumente usadas
Convolução estreita: tamanho do passo s = 1, sem preenchimento de zero em ambas as extremidades p = 0 e o comprimento de saída após a convolução é n - m 1.
Convolução ampla: tamanho do passo s = 1, preenchimento de zero em ambas as extremidades p = m − 1 e o comprimento de saída após a convolução é n m − 1.
Convolução de largura igual: tamanho do passo s = 1, preenchimento de zero em ambas as extremidades p = (m −1)/2, comprimento de saída n após a convolução.
Propriedades matemáticas da convolução
Operação de convolução em dados 3D
Os dados de entrada e os números dos canais de filtro devem ser definidos com o mesmo valor.
Operações de convolução múltipla
Em relação aos filtros da operação de convolução, a quantidade de filtros também deve ser considerada. Portanto, como dados quadridimensionais, os dados de peso do filtro devem ser escritos na ordem de (canal_saída, canal_entrada, altura, largura). Por exemplo, se houver 20 filtros com número de canal 3 e tamanho 5 × 5, pode ser escrito como (20, 3, 5, 5).
Processamento em lote
Esperamos que a operação de convolução também corresponda ao processamento em lote. Para fazer isso, os dados passados entre cada camada precisam ser salvos como dados quadridimensionais. Especificamente, os dados são salvos na ordem (batch_num, canal, altura, largura).
Propriedades de camadas convolucionais
Conexão local: Cada neurônio na camada convolucional (supostamente a l-ésima camada) está conectado apenas aos neurônios em uma janela local na próxima camada (camada l-1), formando uma rede de conexão local. O número de conexões entre a camada convolucional e a próxima camada é bastante reduzido, das conexões n(l) × n(l - 1) originais para conexões n(l) × m. m é o tamanho do filtro.
Compartilhamento de peso: O filtro w(l) como parâmetro é o mesmo para todos os neurônios da camada l.
Devido às conexões locais e ao compartilhamento de peso, os parâmetros da camada convolucional possuem apenas um peso m-dimensional w(l) e um viés unidimensional b(l), com um total de m 1 parâmetros.
O número de neurônios na camada l não é escolhido arbitrariamente, mas satisfaz n(l) = n(l−1) − m 1.
Camada de pooling
Também chamada de camada de agregação, camada de subamostragem
Pooling é a seleção de recursos, que reduz o número de recursos, reduzindo assim o número de parâmetros, reduzindo as dimensões dos recursos e reduzindo o espaço nas direções de altura e comprimento.
Funções de agregação comumente usadas
Máximo: Geralmente, é obtido o valor máximo de todos os neurônios em uma região.
Agregação média (média): Geralmente, é obtido o valor médio de todos os neurônios na área.
Uma camada de pooling típica divide cada mapa de recursos em regiões não sobrepostas de tamanho 2×2 e, em seguida, usa o pooling máximo para redução da resolução.
A camada de pooling também pode ser considerada como uma camada convolucional especial
Em algumas redes convolucionais iniciais (como LeNet-5), funções de ativação não linear às vezes eram usadas na camada de pooling.
onde Y(′d) é a saída da camada de pooling, f(·) é a função de ativação não linear, w(d) e b(d) são pesos escalares e vieses que podem ser aprendidos.
Características da camada de pooling
Não há parâmetros para aprender
O número de canais não muda
Robusto para pequenas mudanças de posição (robustez)
aprendizagem de parâmetros
Cálculo de termos de erro
Visualização da CNN
Visualização dos pesos da camada 1
O filtro antes do aprendizado é inicializado aleatoriamente, portanto não há padrão nos tons de preto e branco, mas o filtro após o aprendizado se torna uma imagem normal. Descobrimos que, por meio do aprendizado, os filtros são atualizados para filtros regulares, como filtros com gradiente de branco para preto, filtros que contêm áreas em blocos (chamadas de blobs), etc. Filtro responsivo a bordas horizontais e verticais
Pode-se observar que os filtros da camada convolucional extrairão informações originais como bordas ou patches. A CNN recém-implementada passará essas informações brutas para as camadas subsequentes.
Extração de informações com base na estrutura hierárquica
Informações extraídas das camadas convolucionais da CNN. Os neurônios da camada 1 respondem às bordas ou manchas, a camada 3 responde à textura, a camada 5 responde às partes do objeto e a camada final totalmente conectada responde à categoria do objeto (cachorro ou carro).
Se múltiplas camadas convolucionais forem empilhadas, à medida que as camadas se aprofundam, as informações extraídas tornam-se mais complexas e abstratas. Esta é uma parte muito interessante do aprendizado profundo. À medida que as camadas se aprofundam, os neurônios mudam de formas simples para informações de “alto nível”. Em outras palavras, assim como entendemos o “significado” das coisas, os objetos de resposta mudam gradualmente.
Rede neural convolucional típica
LeNet-5
LeNet foi proposto em 1998 como uma rede para reconhecimento de dígitos manuscritos. Possui camadas convolucionais consecutivas e camadas de pooling e, finalmente, gera os resultados por meio de uma camada totalmente conectada.
Excluindo a camada de entrada, o LeNet-5 possui um total de 7 camadas.
Camada de entrada: O tamanho da imagem de entrada é 32 × 32 = 1024.
Camada convolucional: Usando 6 filtros 5 × 5, são obtidos 6 conjuntos de mapas de características com tamanho de 28 × 28 = 784. Portanto, o número de neurônios na camada C1 é 6 × 784 = 4704, o número de parâmetros treináveis é 6 × 25 6 = 156 e o número de conexões é 156 × 784 = 122304 (incluindo vieses, os mesmos abaixo).
Camada de pooling: A janela de amostragem é 2×2, o pooling médio é usado e uma função não linear é usada. O número de neurônios é 6 × 14 × 14 = 1176, o número de parâmetros treináveis é 6 × (1 1) = 12 e o número de conexões é 6 × 196 × (4 1) = 5.880.
Camada convolucional. Uma tabela de conexão é usada no LeNet-5 para definir a dependência entre os mapas de recursos de entrada e saída. Conforme mostrado na figura, um total de 60 filtros 5 × 5 são usados para obter 16 grupos de mapas de recursos com tamanho de 10 ×. 10. O número de neurônios é 16 × 100 = 1.600, o número de parâmetros treináveis é (60 × 25) 16 = 1.516 e o número de conexões é 100 × 1.516 = 151.600.
Na camada de pooling, a janela de amostragem é 2 × 2 e 16 mapas de características de tamanho 5 × 5 são obtidos. O número de parâmetros treináveis é 16 × 2 = 32 e o número de conexões é 16 × 25 × (4 1). ) = 2.000.
Camadas convolucionais, usando 120 × 16 = 1, 920 filtros 5 × 5, obtêm 120 conjuntos de mapas de recursos com tamanho de 1 × 1. O número de neurônios na camada C5 é 120, o número de parâmetros treináveis é 1.920 × 25 120 = 48.120 e o número de conexões é 120 × (16 × 25 1) = 48.120.
A camada totalmente conectada possui 84 neurônios e o número de parâmetros treináveis é 84×(120 1) =10164. O número de conexões e o número de parâmetros treináveis são iguais, que é 10.164.
Camada de saída: A camada de saída consiste em 10 funções de base radial euclidiana
juntar-se à mesa
A relação totalmente conectada entre os mapas de recursos de entrada e saída da camada convolucional não é necessária e a convolução não compartilhada pode ser usada
Defina uma tabela de links (Tabela de links) T para descrever o relacionamento de conexão entre os mapas de recursos de entrada e saída.
Se o p-ésimo mapa de recursos de saída depende do d-ésimo mapa de recursos de entrada, então Tp,d = 1, caso contrário, 0.
Alex Net
Foi proposto em 2012 e utiliza muitos métodos técnicos de redes convolucionais profundas modernas.
Treinamento paralelo usando GPUs
A função de ativação usa ReLU
Use Dropout para evitar overfitting
Use o aumento de dados para melhorar a precisão do modelo
Use a camada LRN (Normalização de resposta local) para normalização local
Rede inicial
Módulo inicial: uma camada convolucional contém múltiplas operações de convolução de tamanhos diferentes
A rede Inception é empilhada por vários módulos iniciais e um pequeno número de camadas de agregação.
Versão V1
A versão v1 mais antiga da rede Inception é a famosa GoogLeNet [Szegedy et al., 2015], e venceu a competição de classificação de imagens ImageNet de 2014.
Rede residual ResNet
A eficiência da propagação da informação é melhorada com a adição de arestas diretas à camada convolucional não linear.
elementos não lineares
Pode ser uma ou mais camadas convolucionais
Deixe esta unidade não linear f(x, θ) aproximar uma função objetivo h(x)
Uma unidade não linear composta por uma rede neural tem capacidade suficiente para aproximar aproximadamente a função objetivo original ou função residual, mas na prática esta última é mais fácil de aprender.
Conclusão: Deixe a unidade não linear f(x, θ) aproximar a função residual h(x)−x, e use f(x, θ) x para aproximar h(x).
A rede residual é uma rede muito profunda composta por muitas unidades residuais conectadas em série.
Outros métodos de convolução
convolução transposta
Convolução atrosa (convolução dilatada)
aprendizagem profunda
Aprofundar a rede
Rumo a uma rede mais profunda
Esta rede refere-se ao VGG que será apresentado na próxima seção.
Camada convolucional baseada em pequenos filtros 3×3
A função de ativação é ReLU
A camada Dropout é usada atrás da camada totalmente conectada.
Otimização baseada em Adam
Use o valor inicial de He como o valor inicial do peso
A precisão do reconhecimento é de 99,38%
Melhore ainda mais a precisão do reconhecimento
Aprendizagem em conjunto
decadência da taxa de aprendizagem
Aumento de dados
Aumente o número de imagens aplicando pequenas alterações como rotação, movimento vertical ou horizontal, corte, inversão, aumento de brilho, etc.
Motivação mais profunda
Melhore o desempenho de reconhecimento
A importância do aprofundamento pode ser percebida nos resultados das competições de reconhecimento de imagem em grande escala representadas pelo ILSVRC. Os resultados desta competição mostram que os principais métodos recentes baseiam-se principalmente na aprendizagem profunda e têm uma tendência a aprofundar gradualmente as camadas da rede. Em outras palavras, percebe-se que quanto mais profunda a camada, maior será o desempenho de reconhecimento.
Reduza o número de parâmetros da rede
A vantagem de empilhar pequenos filtros para aprofundar a rede é que isso pode reduzir o número de parâmetros e expandir o campo receptivo (uma região espacial local que impõe alterações aos neurônios). Além disso, através de camadas de sobreposição, funções de ativação como ReLU são colocadas no meio da camada convolucional, melhorando ainda mais a expressividade da rede. Isso ocorre porque a expressividade "não linear" baseada em funções de ativação é adicionada à rede. Através da superposição de funções não lineares, coisas mais complexas podem ser expressas.
Torne o aprendizado mais eficiente
Em comparação com uma rede sem camadas de aprofundamento, ao aprofundar as camadas, os dados de aprendizagem podem ser reduzidos e a aprendizagem pode ser realizada de forma eficiente.
Estrutura de rede de aprendizagem profunda
Competição ILSVRC
ImageNet contém uma variedade de imagens e cada imagem está associada a um rótulo (nome da categoria). A Competição de Reconhecimento de Imagem ILSVRC que utiliza este enorme conjunto de dados é realizada todos os anos.
A competição de reconhecimento de imagem em grande escala ILSVRC foi realizada em 2012. Na competição daquele ano, o método baseado em aprendizagem profunda (comumente conhecido como AlexNet) venceu de forma esmagadora, subvertendo completamente os métodos anteriores de reconhecimento de imagem. Nas competições subsequentes, o aprendizado profundo esteve ativo no centro do palco.
Em particular, a ResNet de 2015 (uma rede profunda com mais de 150 camadas) reduziu a taxa de reconhecimento falso para 3,5%. Diz-se que este resultado excede até mesmo a capacidade de reconhecimento das pessoas comuns.
VGG
VGG é uma CNN básica composta por camadas convolucionais e camadas de pooling. Porém, sua característica é sobrepor camadas ponderadas (camadas convolucionais ou camadas totalmente conectadas) a 16 camadas (ou 19 camadas), que possuem profundidade (às vezes também chamada de "VGG16" ou "VGG19" dependendo da profundidade da camada).
GoogleLeNet
A rede não tem apenas profundidade verticalmente, mas também largura horizontalmente, o que é chamado de estrutura Inception.
ResNet
Tem uma estrutura mais profunda do que as redes anteriores
Já sabemos que aprofundar a profundidade é importante para melhorar o desempenho. No entanto, no aprendizado profundo, se você aprofundar demais, o aprendizado não ocorrerá sem problemas em muitos casos, resultando em um desempenho final ruim. No ResNet, para resolver este tipo de problema, é introduzida uma "estrutura de atalho" (também chamada de "atalho" ou "caminho"). Depois de importar esta estrutura de atalho, o desempenho pode ser continuamente melhorado à medida que a camada se aprofunda (é claro, o aprofundamento da camada também é limitado).
Na prática, os dados de peso aprendidos usando o enorme conjunto de dados do ImageNet são frequentemente aplicados de forma flexível. Isso é chamado de aprendizagem de transferência. Os pesos aprendidos (partes) são copiados para outras redes neurais para reaprendizagem (ajuste fino). Por exemplo, prepare uma rede com a mesma estrutura do VGG, use os pesos aprendidos como valores iniciais e use o novo conjunto de dados como objeto para reaprender. A aprendizagem por transferência é muito eficaz quando há um pequeno conjunto de dados disponível.
Acelerando o aprendizado profundo
Problemas que precisam ser resolvidos
A proporção de tempo de cada camada no processamento direto do AlexNet: o lado esquerdo é ao usar GPU e o lado direito é ao usar CPU. "conv" na figura corresponde à camada de convolução, "pool" corresponde à camada de pooling, "fc" corresponde à camada totalmente conectada e "norm" corresponde à camada de regularização
O tempo de processamento da camada convolucional é responsável por 95% da GPU geral e 89% da CPU geral.
Aceleração baseada em GPU
As GPUs são fornecidas principalmente por duas empresas, NVIDIA e AMD. Embora ambas as GPUs possam ser usadas para cálculos numéricos gerais, a GPU da NVIDIA está mais “próxima” do aprendizado profundo. Na verdade, a maioria das estruturas de aprendizagem profunda só se beneficiam das GPUs da NVIDIA. Isso ocorre porque a estrutura de aprendizagem profunda usa CUDA, um ambiente de desenvolvimento abrangente para computação GPU fornecido pela NVIDIA.
Aprendizagem distribuída
Computação distribuída em múltiplas GPUs ou múltiplas máquinas
O TensorFlow do Google e o CNTK da Microsoft atribuem grande importância ao aprendizado distribuído durante o processo de desenvolvimento
O eixo horizontal é o número de GPUs O eixo vertical é a taxa de aceleração em comparação com uma única GPU.
Redução de dígitos da precisão aritmética
Em relação à precisão numérica (número de dígitos para representar um valor), já sabemos que o deep learning não requer precisão numérica nos dígitos. Esta é uma propriedade importante das redes neurais. Esta propriedade é baseada na robustez das redes neurais.
No futuro, números de ponto flutuante de meia precisão serão usados como padrão e espera-se atingir velocidades até aproximadamente 2 vezes a da geração anterior de GPUs.
Casos de aplicação de aprendizagem profunda
Detecção de objetos
Determine o tipo de objeto e a localização do objeto na imagem
Dentre os métodos de utilização da CNN para detecção de objetos, existe um método denominado R-CNN
Segmentação de imagens
Classifique as imagens no nível do pixel
FCN classifica todos os pixels por meio de um processo de encaminhamento.
FCN significa literalmente “uma rede composta inteiramente por camadas convolucionais”. Comparado com a CNN geral contendo camadas totalmente conectadas, o FCN substitui as camadas totalmente conectadas por camadas convolucionais que desempenham a mesma função.
Geração de legenda de imagem
Um método representativo para gerar legendas de imagens com base em aprendizado profundo é chamado NIC
NIC é composto por CNN e RNN (Rede Neural Recorrente) profunda que processa a linguagem natural.
O futuro da aprendizagem profunda
Transformação de estilo de imagem
Geração de imagem
Piloto automático
aprendizagem por reforço
Representação distribuída de linguagem natural e palavras
Marty: “Isso é pesado.” Dr. Brown: “No futuro, as coisas serão tão pesadas?” —O filme "De Volta para o Futuro"
O que é processamento de linguagem natural
Nossa linguagem é feita de palavras e o significado da linguagem é feito de palavras. Em outras palavras, uma palavra é a menor unidade de significado.
Três maneiras de fazer os computadores entenderem o significado das palavras
Abordagem baseada em dicionário de sinônimos
abordagem baseada em contagem
Abordagem baseada em inferência (word2vec)
Abordagem baseada em dicionário de sinônimos
Considere definir manualmente o significado das palavras
Atualmente amplamente utilizado é o dicionário de sinônimos
Um diagrama baseado na relação hiperônimo-hipônimo de acordo com o significado de cada palavra
WordNet
O dicionário de sinônimos mais famoso
efeito
Obtenha sinônimos para uma palavra
Calcular semelhança entre palavras
Usado através do módulo NLTK
Problemas
Novas palavras continuam aparecendo, dificultando a adaptação às mudanças dos tempos
Alto custo de mão de obra
Incapaz de expressar diferenças sutis em palavras
abordagem baseada em contagem
corpus
Um corpus é uma grande quantidade de dados de texto
Corpora usados na área de processamento de linguagem natural às vezes adicionam informações adicionais aos dados de texto. Por exemplo, cada palavra dos dados de texto pode ser marcada com uma classe gramatical. Aqui, assume-se que o corpus que utilizamos não possui tags adicionadas.
Pré-processamento de corpus baseado em Python
corpus famoso
Wikipédia e Google Notícias
pré-processando
Maiúsculas -> Minúsculas
texto.inferior()
Pontuação do processo
text.replace('.', ' .')
re.split('(\W )', texto)
\W: Corresponde a caracteres que não sejam palavras (não letras, números ou sublinhados)
: Indica correspondência com o padrão anterior "\W" repetido uma ou mais vezes
Crie IDs de palavras e tabelas de correspondência
Converter uma lista de palavras em uma lista de IDs de palavras
corpus = [word_to_id[w] para w em palavras]
Representação distribuída de palavras
Construa representações vetoriais compactas e razoáveis no domínio da palavra
Hipótese de distribuição
O significado de uma palavra é formado pelas palavras que a cercam
Contexto refere-se às palavras que cercam uma palavra centralizada
O tamanho do contexto é chamado de tamanho da janela
O tamanho da janela é 1 e o contexto contém 1 palavra à esquerda e à direita
matriz de coocorrência
A maneira mais simples de usar um vetor é contar quantas vezes uma palavra aparece ao seu redor.
text = 'Você diz adeus e eu digo olá.'
Defina o tamanho da janela para 1
semelhança entre vetores
similaridade de cosseno
Classificação de palavras semelhantes
Obtenha o vetor de palavras da palavra de consulta
Obtenha a similaridade de cosseno entre o vetor de palavras da palavra de consulta e todos os outros vetores de palavras, respectivamente.
Resultados baseados na similaridade de cossenos, mostrando seus valores em ordem decrescente
Melhorias nos métodos baseados em contagem
Clique em informações mútuas
Na matriz de coocorrência, palavras comuns como the will serão consideradas como tendo uma forte correlação com substantivos como car
PMI
, P(x) representa a probabilidade de x ocorrer, P(y) representa a probabilidade de y ocorrer e P(x, y) representa a probabilidade de x e y ocorrerem simultaneamente.
PMI baseado na matriz de coocorrência
insuficiente
Quando o número de coocorrências de duas palavras é 0, log(2)(0) = −∞
ponto positivo informação mútua
Obtenha a matriz PPMI com base na matriz de coocorrência
Redução de dimensionalidade
Precisamos observar a distribuição dos dados e encontrar “eixos” importantes
Decomposição de valor singular (SVD)
SVD decompõe qualquer matriz no produto de 3 matrizes
onde U e V são matrizes ortogonais cujos vetores coluna são ortogonais entre si, e S é uma matriz diagonal onde todos, exceto os elementos diagonais, são 0
A matriz original pode ser aproximada removendo os vetores coluna redundantes na matriz U
você, S, V = np.linalg.svd(W)
Se o tamanho da matriz for N*N, a complexidade computacional do SVD atingirá O(N^3). Portanto, métodos mais rápidos, como SVD truncado, são frequentemente usados. SVD truncado atinge alta velocidade truncando as peças com valores singulares menores.
de sklearn.utils.extmath importar random_svd U, S, V = random_svd (W, n_components = wordvec_size, n_iter = 5, random_state = Nenhum)
Conjunto de dados PTB
O corpus PTB é frequentemente usado como referência para avaliar métodos propostos
Pré-processamento do corpus PTB
colchetes para substituir palavras raras pelo caractere especial
Substitua números específicos por "N"
O pré-processamento que fiz
Concatene todas as frases e trate-as como uma grande série temporal de dados. Neste momento, um caractere especial <eos> é inserido no final de cada frase
Atribuição de hiperparâmetros
tamanho_da_janela = 2
palavravec_size = 100
Avaliação baseada no conjunto de dados do PTB
Para a palavra de consulta você, você pode ver que pronomes pessoais como eu e nós são classificados em primeiro lugar. São palavras com o mesmo uso na gramática.
A palavra de consulta ano possui sinônimos como mês e trimestre.
A palavra de consulta carro possui sinônimos como automóvel e veículo.
Ao usar toyota como termo de consulta, apareceram nomes de fabricantes de automóveis ou marcas como nissan, honda e lexus.
Resumir
Use o corpus para calcular o número de palavras no contexto, converta-as em uma matriz PPMI e, em seguida, obtenha bons vetores de palavras com base na redução da dimensionalidade SVD.
palavra2vec
“Se você não tem uma base para julgar, não raciocine.” ——Arthur Conan Doyle, "Um Escândalo na Boêmia"
incorporação de palavras
Word2Vec é um algoritmo para gerar "embeddings de palavras"
Além do Word2Vec, existem outros métodos para gerar embeddings de palavras, como GloVe (Global Vectors for Word Representation), FastText, etc. Esses métodos podem utilizar diferentes estratégias e algoritmos, mas todos visam capturar efetivamente a informação semântica das palavras no espaço vetorial.
Métodos baseados em inferência e redes neurais
Problemas com métodos baseados em contagem
No mundo real, os corpora lidam com um grande número de palavras. Por exemplo, diz-se que o vocabulário inglês possui mais de 1 milhão de palavras. Se o tamanho do vocabulário exceder 1 milhão, o uso do método baseado em contagem exigirá a geração de uma matriz enorme de 1 milhão x 1 milhão, mas é obviamente irrealista realizar SVD em uma matriz tão grande.
Abordagens baseadas em inferência usando redes neurais
Aprendendo com dados de minilote. Ou seja, utilizar parte dos dados para aprender e atualizar repetidamente os pesos.
O aprendizado de redes neurais pode ser realizado em paralelo utilizando múltiplas máquinas e múltiplas GPUs, acelerando assim todo o processo de aprendizado.
Resumo dos métodos baseados em inferência
Alvo
Preveja quais palavras virão no meio quando dadas as palavras ao redor (contexto), como um cloze
método de raciocínio
Contexto de entrada e o modelo gera a probabilidade de ocorrência de cada palavra.
Como produto do aprendizado de modelo, obteremos uma representação distribuída da palavra
Como processar palavras em redes neurais
Converter palavras em vetores
As redes neurais não podem processar palavras diretamente como você ou digamos. Para usar redes neurais para processar palavras, você precisa primeiro converter as palavras em vetores de comprimento fixo.
Método de conversão
vetor único
Apenas um elemento é 1, os outros elementos são 0
Redes neurais
camada de entrada
Camada totalmente conectada
Os pesos iniciais são aleatórios
Palavra simples2vec
Inferência do modelo CBOW
estrutura
Características
Existem duas camadas de entrada
A transformação da camada de entrada para a camada intermediária é completada pela mesma camada totalmente conectada (peso W(in))
A transformação da camada intermediária para os neurônios da camada de saída é completada por outra camada totalmente conectada (peso W(out))
Os neurônios da camada intermediária são a “média” dos valores obtidos por cada camada de entrada após serem transformados pela camada totalmente conectada.
Os neurônios na camada de saída são as pontuações de cada palavra, e quanto maior seu valor Quanto maior o valor, maior a probabilidade de ocorrência da palavra correspondente.
Aprendizagem do modelo CBOW
Converta pontuações em probabilidades usando a função Softmax
Encontre o erro de entropia cruzada entre essas probabilidades e os rótulos supervisionados
Aprenda isso como uma perda
Representação ponderada e distribuída de word2vec
W (in) peso é a representação distribuída da palavra que queremos
Preparando dados do estudo
contexto e palavras-alvo
Converter para representação one-hot
Implementação do modelo CBOW
Informações adicionais
Modelos CBOW e probabilidade
A probabilidade de que wt ocorra após wt−1 e wt 1 ocorrerem.
Função de perda L (probabilidade logarítmica negativa) do modelo CBOW
modelo skip-gram
word2vec tem dois modelos
CBOW
pular grama
Skip-gram é um modelo que inverte o contexto e as palavras-alvo processadas pelo modelo CBOW.
diagrama de estrutura de rede skip-gram
modelos skip-gram e probabilidade
O modelo skip-gram possui apenas uma camada de entrada e o número de camadas de saída é igual ao número de palavras no contexto. Primeiro, as perdas de cada camada de saída devem ser calculadas separadamente e depois somadas como a perda final.
Preveja o contexto wt-1 e wt 1 com base na palavra do meio (palavra alvo) wt
A função de perda do modelo skip-gram pode ser expressa como
Comparação da função de perda
O número de predições do modelo skip-gram é igual ao número de palavras de contexto, portanto sua função de perda requer a soma das perdas correspondentes a cada palavra de contexto. O modelo CBOW requer apenas a perda da palavra alvo.
A julgar pela precisão da representação distribuída de palavras, o modelo skip-grm dá melhores resultados na maioria dos casos.
Baseado em contagem vs. baseado em inferência
Cenários onde novas palavras precisam ser adicionadas ao vocabulário e a representação distribuída das palavras atualizada
Os métodos baseados em contagem exigem cálculos do zero
Métodos baseados em inferência permitem aprendizado incremental de parâmetros
Propriedades de representações distribuídas de palavras
Os métodos baseados em contagem codificam principalmente a semelhança de palavras
Métodos baseados em inferência podem compreender padrões complexos entre palavras
mulher kingman=rainha
Precisão de representações distribuídas de palavras
Métodos baseados em inferência e métodos baseados em contagem são indistinguíveis
Acelerando o word2vec
Não tente saber tudo, ou você não saberá nada. ——Demócrito (antigo filósofo grego)
Melhorar
estudar
outro
Aplicação do word2vec
A representação distribuída de palavras obtida usando word2vec pode ser usada para encontrar palavras aproximadas
transferir aprendizagem
O conhecimento aprendido em uma área pode ser aplicado a outras áreas
Ao resolver tarefas de processamento de linguagem natural, o word2vec geralmente não é usado para aprender a representação distribuída de palavras do zero. Em vez disso, ele é aprendido primeiro em um corpus em grande escala (dados de texto como Wikipedia, Google News, etc.) e depois. a representação distribuída aprendida é Aplica-se a uma única tarefa.
Em tarefas de processamento de linguagem natural, como classificação de texto, agrupamento de texto, marcação de classes gramaticais e análise de sentimento, a primeira etapa da vetorização de palavras pode usar a representação distribuída de palavras aprendidas.
As representações distribuídas de palavras funcionam muito bem em quase todos os tipos de tarefas de processamento de linguagem natural!
Usando representações distribuídas de palavras, também é possível converter documentos (sequências de palavras) em vetores de comprimento fixo.
Se você puder converter a linguagem natural em vetores, poderá usar muitos métodos de aprendizado de máquina
Como avaliar vetores de palavras
avaliação de similaridade de palavras criadas artificialmente definida para avaliar
A semelhança entre gato e animal é 8, e a semelhança entre gato e carro é 2... Da mesma forma, a semelhança entre palavras é pontuada manualmente com uma pontuação de 0 a 10.
Compare as pontuações dadas pelas pessoas e a similaridade de cosseno dada pelo Word2vec para examinar a correlação entre elas
para concluir
Modelos diferentes têm precisões diferentes (escolha o melhor modelo com base no corpus)
Quanto maior o corpus, melhores serão os resultados (big data é sempre necessário)
A dimensionalidade dos vetores de palavras deve ser moderada (muito grande resultará em baixa precisão)
RNN
Só me lembro de mim miando e chorando em um lugar escuro e úmido. ——"Eu sou um gato" de Natsume Soseki
Modelos de probabilidade e linguagem
Uma rede feedforward simples não pode aprender completamente as propriedades dos dados de séries temporais. Como resultado, surgiu a RNN (Rede Neural Recorrente).
word2vec de uma perspectiva probabilística
O propósito original do modelo CBOW “prever palavras-alvo a partir do contexto” pode ser usado para alguma coisa? P(wt|wt−2, wt−1) pode desempenhar um papel em alguns cenários práticos?
As janelas que consideramos antes são todas simétricas, e então consideramos apenas a janela esquerda.
modelo de linguagem
Use a probabilidade para avaliar a probabilidade de ocorrência de uma sequência de palavras, ou seja, até que ponto a sequência de palavras é natural.
Representação de probabilidade
Onde P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
Usando o modelo CBOW como modelo de linguagem
Cadeia de Markov
Quando a probabilidade de um evento depende apenas dos N eventos que o precedem, é chamada de "cadeia de Markov de ordem N".
Restringir o contexto às 2 palavras à esquerda é uma cadeia de Markov de segunda ordem
insuficiente
Se a janela for muito curta, o contexto não poderá ser combinado
Se a janela for muito longa, a ordem das palavras no contexto será ignorada.
CBOW é a abreviatura de Continuous Bag-Of-Words. Bag-Of-Words significa "um saco de palavras", o que significa que a ordem das palavras no saco é ignorada.
RNN possui um mecanismo que pode lembrar informações de contexto, independentemente da extensão do contexto. Portanto, dados de séries temporais de comprimento arbitrário podem ser processados usando RNN.
word2vec é um método que visa obter representação distribuída de palavras e geralmente não é usado em modelos de linguagem.
RNN
rede neural recorrente
A estrutura da camada RNN
A entrada no tempo t é xt, o que implica que os dados da série temporal (x0, x1, ···, xt, ···) serão inseridos na camada. Então, na forma correspondente à entrada, saída (h0, h1, ··· , ht, ···)
A saída possui dois garfos, o que significa que a mesma coisa foi copiada. Uma bifurcação na saída se tornará sua própria entrada.
desenrolar loop
Usamos a palavra "momento" para nos referirmos ao índice de dados da série temporal (ou seja, os dados de entrada no tempo t são xt). Expressões como "a t-ésima palavra" e "a t-ésima camada RNN" são usadas, bem como expressões como "a palavra no tempo t" ou "a camada RNN no tempo t".
A camada RNN recebe a cada momento dois valores, que são a entrada passada para esta camada e a saída da camada RNN anterior.
RNN tem dois pesos, nomeadamente o peso Wx que converte a entrada x na saída h e o peso Wh que converte a saída da camada RNN anterior na saída no momento atual. Além disso, há preconceito b.
De outra perspectiva, RNN possui um estado h, que é continuamente atualizado por meio da fórmula acima. Então h pode ser chamado de estado oculto ou vetor de estado oculto
Os dois métodos de desenho esquemático são equivalentes
Retropropagação ao longo do tempo
retropropagação baseada em tempo
Para encontrar o gradiente baseado no BPTT, os dados intermediários da camada RNN em cada momento devem ser salvos na memória. Portanto, à medida que os dados da série temporal ficam mais longos, o uso da memória do computador (não apenas de cálculos) também aumenta.
BPTT truncado
Para resolver o problema acima, ao processar dados de séries temporais longas, a prática comum é cortar a conexão de rede em um comprimento apropriado.
Redes que são muito longas na direção do eixo do tempo são truncadas em locais apropriados para criar múltiplas redes pequenas e, em seguida, o método de retropropagação de erro é executado nas pequenas redes cortadas. Este método é chamado de BPTT truncado (BPTT truncado).
No BPTT truncado, a conexão de propagação reversa da rede é cortada, mas a conexão de propagação direta ainda é mantida.
Processando o Pedido
A primeira coisa a fazer é alimentar os dados de entrada do bloco 1 (x0, ..., x9) na camada RNN.
Execute primeiro a propagação direta e depois a retropropagação para obter o gradiente desejado.
Em seguida, os dados de entrada do próximo bloco (x10, x11, ···, x19) são alimentados na camada RNN. O cálculo desta propagação direta requer o último estado oculto h9 do bloco anterior, para que a conexão de propagação direta possa ser mantida.
Aprendizagem em minilote de BPTT truncado
No início dos dados de entrada, um “deslocamento” precisa ser feito dentro dos lotes individuais.
Perceber
Para inserir dados em ordem
Para mudar a posição inicial de cada lote (cada amostra) de dados de entrada
Implementação de RNN
Considerando o aprendizado baseado em BPTT truncado, a rede neural alvo recebe dados de série temporal de comprimento T (T é qualquer valor), e esses estados T podem ser considerados como uma camada
Chame uma camada que processa T etapas por vez de "camada Time RNN"
A camada que realiza o processamento de etapa única na camada Time RNN é chamada de "camada RNN"
Assim como o Time RNN, as camadas que processam dados de série temporal de forma holística são nomeadas começando com a palavra "Time", que é a convenção de nomenclatura estabelecida neste livro. Depois disso, também implementaremos a camada Time Affine, a camada Time Embedding, etc.
Implementação da camada RNN
propagação direta
Retropropagação
Implementação da camada Time RNN
propagação direta
A camada Time RNN salva o estado oculto h em uma variável de membro para herdar o estado oculto entre os blocos
Use o parâmetro stateful para registrar se o estado oculto h é chamado. Na retropropagação, quando stateful é False, o estado oculto da primeira camada RNN é a matriz zero.
Retropropagação
Armazenamos o gradiente que flui para o estado oculto no momento anterior na variável membro dh. Isso ocorre porque o usaremos quando discutirmos seq2seq (sequência a sequência) no Capítulo 7
Implementação de camadas para processamento de dados de séries temporais
Imagem completa do RNNLM
Os modelos de linguagem baseados em RNN são chamados RNNLM
estrutura
A camada 1 é a camada de incorporação, que converte IDs de palavras em representações distribuídas de palavras (vetores de palavras). Este vetor de palavras é alimentado na camada RNN.
A camada RNN envia o estado oculto para a próxima camada (parte superior) e também envia o estado oculto para a próxima camada RNN (direita).
A saída do estado oculto da camada RNN para cima passa pela camada Afim e é passada para a camada Softmax.
Amostra
Você diz adeus, e eu digo Olá
A primeira palavra, você com ID de palavra 0, é inserida. Neste momento, olhando para a saída da distribuição de probabilidade da camada Softmax, podemos ver que a probabilidade de dizer é a mais alta, o que indica que a palavra que aparece depois de você está corretamente prevista para ser dita.
A palavra 2 diz. Neste momento, a saída da camada Softmax tem maior probabilidade de adeus e olá. Porque a camada RNN salva as informações anteriores de "você diz" como um pequeno vetor de estado oculto. A tarefa da camada RNN é passar essas informações para a camada Afim acima e para a camada RNN no momento seguinte.
Implementação da camada Tempo
Estrutura da rede neural alvo
Tempo Afim
A camada Time Affine não usa simplesmente camadas T Affine, mas usa operações de matriz para obter um processamento geral eficiente.
Tempo Softmax
O erro de perda é implementado no Softmax. A camada Cross Entropy Error calcula o erro de entropia cruzada.
T Softmax com camadas de Perda calculam cada uma a perda, depois somam-nas e calculam a média, e o valor resultante é usado como a perda final.
Aprendizagem e avaliação do RNNLM
Implementação de RNNLM
Avaliação do modelo de linguagem
Os dados de entrada são 1
A perplexidade é frequentemente usada como um indicador para avaliar o desempenho de previsão de modelos de linguagem. Perplexidade=1/probabilidade
Os dados de entrada são múltiplos
Aqui, assume-se que a quantidade de dados é N. tn é o rótulo de solução correto na forma de um vetor one-hot, tnk representa o k-ésimo valor dos n-ésimos dados e ynk representa a distribuição de probabilidade (a saída do Softmax em uma rede neural). A propósito, L é a perda da rede neural
Quanto maior a probabilidade, melhor, e quanto menor a confusão, melhor.
A perplexidade representa o número de opções que podem ser escolhidas a seguir. Se a confusão for 1,25, significa que o número de candidatos para a próxima palavra é cerca de 1.
Aprendizagem de RNNLM
Classe de treinador da RNNLM
Encapsule as operações acima em classes
Estendido para estruturas gráficas
rede neural recorrente
Existem três camadas ocultas h1, h2 e h3, onde h1 é calculado a partir de duas entradas x1 e x2, h2 é calculado a partir de duas outras camadas de entrada x3 e x4, e h3 é calculado a partir de duas camadas ocultas h1 e h2.
rede gráfica
RNN fechado
Tire sua bagagem e viaje com pouca bagagem. ——Nietzsche
Quando dizemos RNN, nos referimos mais à camada LSTM do que ao RNN do capítulo anterior. Quando precisamos nos referir explicitamente ao RNN do capítulo anterior, dizemos “RNN simples” ou “Elman”.
Problemas com RNN simples
Durante o processo de aprendizagem, a camada RNN aprende dependências na direção do tempo, passando "gradientes significativos" para o passado. Mas o gradiente de aprendizagem é difícil de controlar, o que pode levar ao desaparecimento ou explosão do gradiente.
razão
função de ativação
tanh
Como você pode ver no gráfico, seu valor é menor que 1,0 e seu valor fica menor à medida que x se afasta de 0. Isso significa que à medida que o gradiente retropropagado passa pelo nó tanh, seu valor se tornará cada vez menor. Portanto, se você passar a função tanh T vezes, o gradiente também diminuirá T vezes.
ReLU
Gradiente não degrada
Nó MatMul (produto de matriz)
explosão gradiente
Conforme mostrado na figura, o tamanho do gradiente aumenta exponencialmente com o intervalo de tempo. Se ocorrer uma explosão de gradiente, isso eventualmente levará ao estouro e a valores como NaN (não é um número, valor não numérico). Como resultado, o aprendizado da rede neural não funcionará corretamente.
gradiente desaparece
Conforme mostrado na figura, o tamanho do gradiente diminui exponencialmente com o intervalo de tempo. Se ocorrer o desaparecimento do gradiente, o gradiente ficará rapidamente menor. Uma vez que o gradiente se torna pequeno, o gradiente de peso não pode ser atualizado e o modelo não pode aprender dependências de longo prazo.
Razão para mudança
A matriz Wh é repetidamente multiplicada T vezes. Se Wh fosse um escalar, o problema seria simples: quando Wh é maior que 1, o gradiente aumenta exponencialmente; quando Wh é menor que 1, o gradiente diminui exponencialmente;
Se Wh é uma matriz. Neste ponto, os valores singulares da matriz se tornarão indicadores. Simplificando, os valores singulares de uma matriz representam o grau de dispersão dos dados. Dependendo se este valor singular (mais precisamente o máximo de múltiplos valores singulares) é maior que 1, pode-se prever mudanças na magnitude do gradiente.
Contramedidas contra explosão de gradientes
Existe um método estabelecido para resolver a explosão de gradiente, chamado recorte de gradiente.
Supõe-se aqui que os gradientes de todos os parâmetros utilizados pela rede neural podem ser integrados em uma variável e representados pelo símbolo g. Em seguida, defina o limite como limite. Neste momento, se a norma L2 g do gradiente for maior ou igual ao limite, o gradiente é corrigido conforme descrito acima.
Gradiente de desaparecimento e LSTM
No aprendizado RNN, o desaparecimento do gradiente também é um grande problema. Para resolver este problema, a estrutura da camada RNN precisa ser fundamentalmente alterada. Aqui o tópico deste capítulo, Gated RNN, está prestes a aparecer. Muitas estruturas Gated RNN (estruturas de rede) foram propostas, entre as quais LSTM e GRU são as representativas.
Interface LSTM
LSTM é a abreviatura de Long Short-Term Memory, o que significa que pode manter a memória de curto prazo (memória de curto prazo) por um longo tempo.
Primeiro, expresse o cálculo de tanh(h(t−1)*Wh xt*Wx b) como um nó retangular tanh (ht−1 e xt são vetores linha)
Vamos comparar a interface (entrada e saída) de LSTM e RNN
A diferença entre a interface do LSTM e do RNN é que o LSTM também possui o caminho c. Este c é chamado de unidade de memória (ou simplesmente “unidade”), que equivale ao departamento de memória dedicado do LSTM.
A característica da unidade de memória é que ela apenas recebe e transmite dados dentro da camada LSTM. Ou seja, do lado que recebe a saída do LSTM, a saída do LSTM possui apenas o vetor de estado oculto h. A unidade de memória c é invisível para o mundo exterior e nem precisamos considerar a sua existência.
A estrutura da camada LSTM
ct armazena a memória do LSTM no tempo t, que pode ser considerada como contendo todas as informações necessárias do passado até o tempo t. Então, com base no ct desta memória portadora, o estado oculto ht é gerado.
calcular
A unidade de memória atual ct é calculada com base nas três entradas c(t−1) h(t−1) e xt por meio de "algum tipo de cálculo" (descrito posteriormente).
O estado oculto ht é calculado usando o ct atualizado, a fórmula é ht = tanh(ct)
Portão
O grau de abertura e fechamento da porta também é aprendido automaticamente a partir dos dados. O grau de abertura e fechamento é representado por um número real de 0,0 a 1,0 (1,0 é totalmente aberto).
portão de saída
O estado oculto ht aplica apenas a função tanh à unidade de memória ct, e consideramos a aplicação de portas a tanh(ct). Como esta porta gerencia a saída do próximo estado oculto ht, ela é chamada de porta de saída.
A porta de saída é calculada da seguinte forma. A função sigmóide é representada por σ()
ht pode ser calculado a partir do produto de o e tanh(ct). O método de cálculo é o produto elemento a elemento, que é o produto dos elementos correspondentes.
porta do esquecimento
Agora, adicionamos uma porta para esquecer memórias desnecessárias na unidade de memória c(t−1), que aqui é chamada de porta do esquecimento.
O cálculo do portão de esquecimento é o seguinte
ct é obtido pelo produto deste f e o elemento correspondente da unidade de memória anterior ct−1
nova unidade de memória
Agora também queremos adicionar algumas novas informações a esta unidade de memória que devem ser lembradas, para isso adicionamos um novo nó tanh
O resultado calculado com base no nó tanh é adicionado à unidade de memória ct−1 no momento anterior.
A função deste nó tanh não é bloquear, mas adicionar novas informações à unidade de memória. Portanto, ele não usa a função sigmóide como função de ativação, mas usa a função tanh.
porta de entrada
Adicionamos uma porta a g na Figura 6-17. Essa porta recém-adicionada é chamada aqui de porta de entrada.
A porta de entrada determina o valor de cada elemento da nova informação g. As portas de entrada não adicionam novas informações sem consideração; em vez disso, elas fazem escolhas sobre quais informações adicionar. Em outras palavras, a porta de entrada adiciona novas informações ponderadas.
A porta de entrada é calculada da seguinte forma
Fluxo gradiente LSTM
A retropropagação de células de memória flui apenas através dos nós "" e "×". O nó " " flui para fora do gradiente do upstream como está, então o gradiente não muda (degenera). O cálculo do nó "×" não é um produto de matriz, mas sim o produto dos elementos correspondentes (produto Hadama), que não causará alterações de gradiente.
Implementação de LSTM
Para mudanças afins como x*Wx h*Wh b, pode ser integrado em uma fórmula
As bibliotecas de matrizes são geralmente mais rápidas ao calcular "matrizes grandes" e o código-fonte é mais limpo ao gerenciar os pesos em conjunto.
Modelo de linguagem usando LSTM
O modelo de linguagem implementado aqui é quase o mesmo do capítulo anterior. A única diferença é que onde a camada Time RNN foi usada no capítulo anterior, a camada Time LSTM é usada desta vez.
Outras melhorias no RNNLM
Multicamadas de camadas LSTM
Aprofundar a camada LSTM (empilhar múltiplas camadas LSTM) geralmente funciona bem.
Quantas camadas são apropriadas?
Como o número de camadas é um hiperparâmetro, ele precisa ser determinado com base na complexidade do problema a ser resolvido e no tamanho dos dados de treinamento que podem ser fornecidos.
No caso de aprender um modelo de linguagem no conjunto de dados PTB, melhores resultados podem ser obtidos quando o número de camadas LSTM for de 2 a 4
O modelo GNMT utilizado no Google Translate é sobreposto a uma rede de 8 camadas de LSTM.
Suprimir overfitting com base em Dropout
Ao aprofundar a profundidade, podem ser criados modelos mais expressivos, mas tais modelos muitas vezes sofrem de overfitting. Para piorar a situação, as RNNs são mais propensas ao overfitting do que as redes neurais feedforward convencionais, portanto, as contramedidas de overfitting para RNNs são muito importantes.
Contramedidas
Adicionar dados de treinamento
Reduza a complexidade do modelo
Regularização
Cair fora
Cair fora
O dropout seleciona aleatoriamente um subconjunto de neurônios, depois os ignora e interrompe a transmissão de sinais.
Posição de inserção da camada dropout
Abandono regular
estrutura de erro
Se o Dropout for inserido na direção da série temporal, as informações serão perdidas gradualmente ao longo do tempo à medida que o modelo aprende.
Estrutura correta
Inserir camada Dropout verticalmente
Abandono de Variação
Ao compartilhar a máscara entre Dropouts da mesma camada, a máscara fica “fixa”. Desta forma, a forma como a informação é perdida também é “consertada”, de forma que a perda exponencial de informação que ocorre com o Dropout regular pode ser evitada.
divisão de peso
A amarração de peso pode ser traduzida literalmente como "amarração de peso".
O truque para vincular (compartilhar) os pesos da camada Embedding e da camada Affine é o compartilhamento de pesos. Ao compartilhar os pesos entre essas duas camadas, o número de parâmetros aprendidos pode ser bastante reduzido. Além disso, melhora a precisão.
Melhor implementação de RNNLM
Pesquisa de fronteira
Gerar texto com base em RNN
Não existe artigo perfeito, assim como não existe desespero perfeito. ——Haruki Murakami "Ouça o Vento Cantar"
Gere texto usando modelos de linguagem
Como gerar a próxima palavra nova
Selecione a palavra com maior probabilidade, o resultado é determinado de forma única
Palavras com alta probabilidade são fáceis de serem selecionadas, palavras com baixa probabilidade são difíceis de serem selecionadas
Implementação de geração de texto
Melhor geração de texto
Use melhores modelos de linguagem
modelo seq2seq
Seq2Seq (sequência para sequência, modelo de sequência para sequência)
Modelos para converter dados de série temporal em outros dados de série temporal
O princípio de seq2seq
Este modelo possui dois módulos - Codificador e Decodificador. O codificador codifica os dados de entrada e o decodificador decodifica os dados codificados.
seq2seq consiste em duas camadas LSTM, o codificador LSTM e o decodificador LSTM.
O estado oculto h do LSTM é um vetor de comprimento fixo. A diferença entre ele e o modelo da seção anterior é que a camada LSTM recebe o vetor h. Essa pequena e única mudança permitiu que modelos de linguagem comum evoluíssem para decodificadores que pudessem lidar com a tradução.
Uma tentativa simples de conversão de dados de série temporal
Tentando fazer com que seq2seq faça cálculos adicionais
Dados de série temporal de comprimento variável
enchimento
Preencha os dados originais com dados inválidos (sem sentido), de E alinhe o comprimento dos dados.
Ao usar preenchimento, você precisa adicionar algum processamento específico de preenchimento ao seq2seq
Quando o preenchimento é inserido no decodificador, sua perda não deve ser calculada (isso pode ser resolvido adicionando uma função Softmax com máscara de perda à camada)
Ao preencher a entrada no codificador, a camada LSTM deve gerar a entrada do momento anterior como está
conjunto de dados aditivos
Implementação de seq2seq
Melhorias no seq2seq
Dados de entrada inversos
Em muitos casos, o aprendizado progride mais rapidamente e a precisão final melhora após o uso desta técnica.
Intuitivamente, a propagação dos gradientes pode ser mais suave e eficaz após a inversão dos dados.
espiando
O codificador que usa o capacete é chamado de Peeky Decoder, e o seq2seq que usa o Peeky Decoder é chamado de Peeky seq2seq.
O codificador converte a sentença de entrada em um vetor h de comprimento fixo, que concentra todas as informações exigidas pelo decodificador. É a única fonte de informação para o decodificador.
A saída h do codificador, que concentra informações importantes, pode ser atribuída a outras camadas do decodificador
Dois vetores são inseridos na camada LSTM e na camada Afim ao mesmo tempo, o que na verdade representa a concatenação dos dois vetores.
Aplicação de seq2seq
Tradução automática: converta “texto em um idioma” em “texto em outro idioma”
Resumo automático: converta “um texto longo” em um “breve resumo”
Sistema de perguntas e respostas: converta "pergunta" em "resposta"
Resposta automática de e-mail: converta “texto de e-mail recebido” em “texto de resposta”
bot de bate-papo
aprendizagem de algoritmo
Descrição automática da imagem
Atenção
Atenção é tudo. ——Título do artigo de Vaswani
A atenção é sem dúvida uma das tecnologias mais importantes no campo da aprendizagem profunda dos últimos anos. O objetivo deste capítulo é compreender a estrutura da Atenção no nível do código e, em seguida, aplicá-la a problemas práticos para experimentar seus maravilhosos efeitos.
Estrutura de atenção
Problemas com seq2seq
Um codificador é usado em seq2seq para codificar os dados da série temporal e, em seguida, as informações codificadas são passadas para o decodificador. Neste ponto, a saída do codificador é um vetor de comprimento fixo.
Vetores de comprimento fixo significam que qualquer que seja o comprimento da instrução de entrada (não importa quanto tempo), será convertido em um vetor do mesmo comprimento.
Melhorias no codificador
O comprimento da saída do codificador deve mudar de acordo com o comprimento do texto de entrada
Como o codificador processa da esquerda para a direita, estritamente falando, o vetor "gato" contém apenas as informações das três palavras "我的人", "は" e "猫". Considerando o equilíbrio geral, é melhor incluir informações em torno da palavra “gato” de maneira uniforme. Nesse caso, o RNN bidirecional (ou LSTM bidirecional) que processa dados de séries temporais de ambas as direções é mais eficaz.
Melhorias no decodificador
Anteriormente, colocamos o "último" estado oculto da camada LSTM do codificador no estado oculto "inicial" da camada LSTM do decodificador.
O decodificador do capítulo anterior usou apenas o último estado oculto da camada LSTM do codificador. Se você usar hs, apenas a última linha será extraída e passada para o decodificador. A seguir melhoramos o decodificador para poder usar todos os hs.
Nós nos concentramos em uma determinada palavra (ou conjunto de palavras) e convertemos essa palavra a qualquer momento. Isso permite que o seq2seq aprenda a correspondência entre "quais palavras na entrada e na saída estão relacionadas a quais palavras".
Exemplo
Minha geração [わがはい] = I
猫[ねこ] = gato
Muitos estudos exploram o conhecimento de correspondências de palavras como "gato = gato". Essas informações que indicam a correspondência entre palavras (ou frases) são chamadas de alinhamento. Até agora, o alinhamento tem sido feito principalmente manualmente, mas a tecnologia de Atenção que apresentaremos introduziu com sucesso a ideia de alinhamento no seq2seq automaticamente. Esta é também a evolução da “operação manual” para a “automação mecânica”.
mudanças estruturais
Como calcular
A operação de “seleção” pode ser substituída por uma operação diferenciável? Em vez de “seleção única”, é melhor “selecionar tudo”. Calculamos separadamente o peso que representa a importância (valor de contribuição) de cada palavra.
a Como uma distribuição de probabilidade, cada elemento é um escalar de 0,0 a 1,0 e a soma é 1. Em seguida, calcule a soma ponderada do peso que representa a importância de cada palavra e do vetor de palavras hs para obter o vetor alvo.
Ao processar dados de sequência, a rede deve prestar mais atenção às partes importantes da entrada e ignorar as partes sem importância. Ela pondera explicitamente as partes importantes da sequência de entrada, aprendendo os pesos das diferentes partes, para que o modelo possa ser melhor remunerado. muita atenção às informações relacionadas aos resultados. A chave para o mecanismo de Atenção é introduzir um mecanismo para calcular dinamicamente o peso de cada posição na sequência de entrada, de modo que, em cada intervalo de tempo, diferentes partes da sequência de entrada sejam ponderadas e somadas para obter a saída do intervalo de tempo atual. . Ao gerar cada saída, o decodificador presta atenção diferente a diferentes partes da sequência de entrada, permitindo que o modelo se concentre melhor em informações importantes na sequência de entrada.
Aprendizagem do peso a
Nosso objetivo é expressar numericamente o quão "semelhante" este h é aos vetores de palavras individuais de hs.
Aqui usamos o produto interno vetorial mais simples.
Existem várias maneiras de calcular a similaridade vetorial. Além dos produtos internos, também existe a prática de usar pequenas redes neurais para gerar pontuações.
A seguir, s é regularizado usando a antiga função Softmax
Integrar
Implementação de seq2seq com atenção
Avaliação da atenção
Procuramos confirmar o efeito de seq2seq com Atenção estudando o problema de "conversão de formato de data"
Problema de conversão de formato de data
Aprendendo seq2seq com atenção
Visualização da Atenção
Outros tópicos sobre Atenção
RNN bidirecional
Se considerarmos o equilíbrio geral, queremos que o vetor contenha informações em torno da palavra “gato” de maneira mais uniforme.
O LSTM bidirecional adiciona um processamento de camada LSTM na direção oposta sobre a camada LSTM anterior.
Divida os estados ocultos das duas camadas LSTM a cada momento e use-os como o vetor de estado oculto final (além da emenda, você também pode "soma" ou "média", etc.)
Como usar a camada Atenção
A saída da camada de atenção (vetor de contexto) é conectada à entrada da camada LSTM no momento seguinte. Através dessa estrutura, a camada LSTM consegue utilizar as informações do vetor de contexto. Por outro lado, o modelo que implementamos usa vetores de contexto na camada Afim.
Aprofundamento de seq2seq e pular conexão
Aprofundar a camada RNN
seq2seq com atenção usando 3 camadas de camada LSTM
conexão residual
Na junção da conexão residual, são adicionadas duas saídas.
Como a adição propaga gradientes "como estão" durante a retropropagação, os gradientes nas conexões residuais podem ser propagados para a camada anterior sem qualquer efeito. Dessa forma, mesmo que a camada seja aprofundada, o gradiente pode se propagar normalmente sem o desaparecimento do gradiente (ou explosão do gradiente), e o aprendizado pode prosseguir sem problemas.
Aplicação de Atenção
GNMT
A história da tradução automática
Tradução baseada em regras
Use tradução baseada em casos
Tradução baseada em estatísticas
Tradução automática neural
Desde 2016, o Google Translate usa tradução automática neural para serviços reais. Sistema de tradução automática chamado GNMT
O GNMT requer grandes quantidades de dados e recursos computacionais. O GNMT usa uma grande quantidade de dados de treinamento (1 modelo) aprendidos em quase 100 GPUs por 6 dias. Além disso, o GNMT também está tentando melhorar ainda mais a precisão com base em tecnologias como aprendizagem em conjunto e aprendizagem por reforço, que podem aprender 8 modelos em paralelo.
Transformador
RNN pode lidar bem com dados de séries temporais de comprimento variável. No entanto, a RNN também apresenta deficiências, como problemas de processamento paralelo.
O RNN precisa ser calculado passo a passo com base nos resultados do cálculo do momento anterior, portanto é (basicamente) impossível calcular o RNN em paralelo na direção do tempo. Isso se tornará um grande gargalo ao realizar aprendizado profundo em um ambiente de computação paralelo usando GPUs, por isso temos motivação para evitar RNN.
O Transformer não usa RNN, mas usa Atenção para processamento. Vamos dar uma breve olhada neste Transformer.
Autoatenção
O Transformer é baseado na Atenção, que utiliza a técnica da Autoatenção, o que é importante. Autoatenção se traduz literalmente como “atenção de si mesmo”, ou seja, é a Atenção baseada em dados de série temporal, com o objetivo de observar a relação entre cada elemento de dados de uma série temporal e outros elementos.
Use uma rede neural totalmente conectada com uma camada oculta e função de ativação ReLU. Além disso, Nx na figura significa que os elementos circundados pelo fundo cinza são empilhados N vezes.
NTM
NTM (Máquina de Turing Neural)
As redes neurais também podem obter recursos adicionais usando dispositivos de armazenamento externos.
Com base na Atenção, codificadores e decodificadores implementam “operações de memória” em computadores. Em outras palavras, isso pode ser interpretado como: o codificador grava as informações necessárias na memória e o decodificador lê da memória Obtenha as informações necessárias.
Para imitar a operação da memória do computador, a operação da memória do NTM usa duas atenções,
Atenção baseada em conteúdo é igual à Atenção que apresentamos antes e é usada para encontrar vetores semelhantes de um determinado vetor (vetor de consulta) da memória.
A atenção baseada em posição é usada para avançar e retroceder a partir do endereço de memória (o peso de cada local na memória) que foi focado no último momento. Aqui omitimos a discussão de seus detalhes técnicos, que podem ser alcançados através de operação de convolução unidimensional. A função de movimento baseada na localização da memória pode reproduzir a atividade única do computador de “ler enquanto avança (um endereço de memória)”.
O NTM resolveu com sucesso problemas de memória de longo prazo, problemas de classificação (organização de números grandes para pequenos), etc.
Otimização e regularização de rede
Nenhum truque matemático pode compensar a falta de informação [Cornélio Lanczos]
Duas grandes dificuldades
Otimização
Difícil de otimizar e computacionalmente intensivo
problema de generalização
A capacidade de ajuste é muito forte e é fácil de ajustar demais.
Otimização de Rede
Dificuldades na otimização da rede
Diversidade de estrutura de rede
É difícil encontrar um método de otimização geral. Diferentes métodos de otimização também apresentam diferenças relativamente grandes em diferentes estruturas de rede.
Dificuldades com espaços de baixa dimensão
Como escolher os parâmetros de inicialização
Fuja do ótimo local
Dificuldades com espaços de alta dimensão
Como escolher os parâmetros de inicialização
Como escapar de um ponto de sela
Em algumas dimensões é o ponto mais alto, em outras dimensões é o ponto mais baixo
fundo plano
Existem muitos parâmetros em redes neurais profundas e existe um certo grau de redundância, o que faz com que cada parâmetro tenha um impacto relativamente pequeno na perda final.
preso no mínimo local
otimização
Tipo de método de gradiente descendente
descida gradiente em lote
descida gradiente estocástica
descida gradiente de minilote
Se estiver em descida gradiente, calcular o gradiente em todos os dados de treinamento para cada iteração requer mais recursos computacionais. Além disso, os dados em grandes conjuntos de treinamento costumam ser muito redundantes e não há necessidade de calcular gradientes em todo o conjunto de treinamento.
decadência da taxa de aprendizagem
A taxa de aprendizagem deve ser mantida maior no início para garantir a velocidade de convergência, e menor quando converge para perto do ponto ideal para evitar oscilações para frente e para trás.
tipo
Decadência reversa do tempo
decadência exponencial
decaimento exponencial natural
β é a taxa de atenuação, geralmente assumindo um valor de 0,96.
Existem também métodos para ajustar adaptativamente a taxa de aprendizagem, como AdaGrad, RMSprop, AdaDelta, etc.
Método AdaGrad
Entre as técnicas eficazes para a taxa de aprendizagem está um método chamado decaimento da taxa de aprendizagem, que diminui gradualmente a taxa de aprendizagem à medida que a aprendizagem avança.
AdaGrad leva essa ideia adiante, ajustando a taxa de aprendizagem de forma adequada para cada elemento dos parâmetros enquanto aprende ao mesmo tempo
Ada vem da palavra inglesa Adaptive, que significa "apropriado"
Assim como o SGD anterior, W representa o parâmetro de peso a ser atualizado, a derivada parcial representa o gradiente e n representa a taxa de aprendizagem.
Mas surge uma nova variável h, que armazena a soma dos quadrados de todos os valores de gradiente anteriores. Portanto, quanto mais profundo o aprendizado, menor será a amplitude de atualização.
Método RMSProp
Se você aprender indefinidamente, o valor da atualização se tornará 0
O método RMSProp não adiciona todos os gradientes anteriores igualmente, mas gradualmente esquece os gradientes anteriores e reflete mais informações sobre os novos gradientes ao realizar a operação de adição.
Tecnicamente falando, esta operação é chamada de “média móvel exponencial”, que reduz exponencialmente a escala dos gradientes anteriores.
Otimização da direção do gradiente
Método de impulso
Na descida gradiente de minilote, se o número de amostras selecionadas a cada vez for relativamente pequeno, a perda diminuirá de maneira oscilante.
Usando o gradiente médio no último período de tempo em vez do gradiente no momento atual como a direção de atualização do parâmetro.
também chamado de método do momento
Desvantagens do SGD
f(x,y)=(1/20)*x^2 y^2
Caminho de atualização otimizado baseado em SGD: movendo-se em direção ao valor mínimo (0, 0) em forma de zigue-zague, baixa eficiência
formas de melhorar
Assim como o SGD anterior, W representa o parâmetro de peso a ser atualizado, a derivada parcial representa o gradiente e n representa a taxa de aprendizagem.
Mas surge uma nova variável v, que corresponde à velocidade física, que pode ser entendida como a força exercida sobre o objeto na direção do gradiente.
Método de Adão
O impulso se move de acordo com as regras físicas de uma bola rolando em uma tigela, e o AdaGrad ajusta o ritmo de atualização adequadamente para cada elemento do parâmetro. Combiná-los é ideia de Adam
Não existe (ainda) um método que funcione bem em todos os problemas. Cada um desses quatro métodos tem suas próprias características e cada um tem seus próprios problemas que são bons em resolver e problemas que não são bons em resolver.
corte gradiente
Se o gradiente aumentar repentinamente, usar um gradiente grande para atualizar os parâmetros fará com que ele fique longe do ponto ideal.
Quando o módulo do gradiente é maior que um determinado limite, o gradiente é truncado.
Limite o módulo do gradiente a um intervalo e trunque-o quando o módulo do gradiente for menor ou maior que esse intervalo.
tipo
Truncar por valor
gt = máx(min(gt, b), a).
Truncar de acordo com o molde
Inicialização de parâmetros
Inicialização da distribuição gaussiana
O método de inicialização gaussiano é o método de inicialização mais simples. Os parâmetros são inicializados aleatoriamente a partir de uma distribuição gaussiana com uma média fixa (como 0) e uma variância fixa (como 0,01).
Quando o número de conexões de entrada de um neurônio é n(in), seu peso de conexão de entrada pode ser definido para ser inicializado com a distribuição gaussiana de N(0,sqrt(1/nin)).
Se o número de conexões de saída nout também for considerado, ele poderá ser inicializado de acordo com a distribuição gaussiana de N(0,sqrt(2/(nin nout)))
Inicialização uniformemente distribuída
A inicialização de distribuição uniforme usa distribuição uniforme para inicializar parâmetros dentro de um determinado intervalo [−r, r]. A configuração do hiperparâmetro r também pode ser ajustada de forma adaptativa de acordo com o número de conexões de neurônios.
Tipo de função de ativação
função logística
tanh
Valor inicial de Xavier
Tentamos utilizar os valores iniciais de peso recomendados no artigo de Xavier Glorot et al.
Se o número de nós na camada anterior for n, o valor inicial usa uma distribuição gaussiana com desvio padrão de (1/sqrt(n))
Valor inicial do peso ReLU
Quando a função de ativação usa ReLU, geralmente é recomendado usar o valor inicial dedicado a ReLU, que é o valor inicial recomendado por Kaiming He et al., também conhecido como "valor inicial de He".
Quando o número de nós na camada atual é n, o valor inicial de He usa uma distribuição gaussiana com desvio padrão de (2/sqrt(n))
Pré-processamento de dados
unidades diferentes
As diferentes fontes e unidades de medida de cada recurso dimensional farão com que a faixa de distribuição desses valores de recurso seja muito diferente. Quando calculamos a distância euclidiana entre diferentes amostras, características com uma grande faixa de valores desempenharão um papel dominante.
normalização de escala
O intervalo de valores de cada recurso é normalizado para [0, 1] ou [−1, 1] por escala.
normalização padrão
Também chamada de normalização de pontuação z
Cada recurso dimensional é processado para estar em conformidade com a distribuição normal padrão (a média é 0, o desvio padrão é 1).
Redundância de dados
Depois que os dados de entrada são branqueados, a correlação entre os recursos é baixa e todos os recursos têm a mesma variação.
Uma das principais formas de conseguir o clareamento é utilizar a análise de componentes principais para remover a correlação entre os componentes.
Normalização camada por camada
Ao usar a descida gradiente estocástica para treinar uma rede, cada atualização de parâmetro fará com que a distribuição de entradas para cada camada no meio da rede mude. Quanto mais profunda a camada, mais obviamente mudará a distribuição de sua entrada.
normalização de lote
Também chamado de Normalização em Lote, método BN
Para que cada camada tenha a amplitude adequada, a distribuição dos valores de ativação é “forçada” a ser ajustada.
Execute a regularização para que a média da distribuição dos dados seja 0 e a variância seja 1.
Qualquer camada intermediária da rede neural pode ser normalizada.
vantagem
Pode fazer o aprendizado acontecer rapidamente (pode aumentar a taxa de aprendizado)
Menos dependente dos valores iniciais (não tão sensível aos valores iniciais)
Suprimir overfitting (reduzir a necessidade de Dropout, etc.)
Camada de norma de lote
Afim->Norma de lote->ReLU
normalização de camada
Limitações da normalização em lote
A normalização em lote é uma operação de normalização em um único neurônio em uma camada intermediária, portanto, o número de amostras de minilotes não deve ser muito pequeno, caso contrário, será difícil calcular as informações estatísticas de um único neurônio.
Se a distribuição da entrada líquida de um neurônio mudar dinamicamente em uma rede neural, como uma rede neural recorrente, a operação de normalização em lote não poderá ser aplicada
A normalização da camada normaliza todos os neurônios em uma camada intermediária.
A normalização em lote é muito eficaz em redes neurais convolucionais (CNN), enquanto a normalização em camadas é mais comum em redes neurais recorrentes (RNN) e redes Transformer.
Otimização de hiperparâmetros
composição
Estrutura de rede
conexões entre neurônios
Número de camadas
Número de neurônios por camada
Tipo de função de ativação
Parâmetros de otimização
Métodos de otimização de rede
taxa de Aprendizagem
Tamanho da amostra para pequenos lotes
coeficiente de regularização
Dados de validação (conjunto de validação)
O desempenho do hiperparâmetro não pode ser avaliado usando dados de teste
Se os dados de teste forem usados para confirmar a "bondade" do valor do hiperparâmetro, isso fará com que o valor do hiperparâmetro seja ajustado para caber apenas nos dados de teste.
Os dados de treinamento são usados para aprendizado de parâmetros (pesos e vieses) e os dados de validação são usados para avaliação de desempenho de hiperparâmetros. Para confirmar a capacidade de generalização, os dados de teste devem ser usados no final (de preferência apenas uma vez)
Otimização
pesquisa em grade
Escolha o caminho certo, tentando todas as combinações de hiperparâmetros Métodos para configuração de hiperparâmetros de grupo.
Escolha vários valores de "experiência". Por exemplo, taxa de aprendizagem α, podemos definir α ∈ {0,01, 0,1, 0,5, 1,0}.
pesquisa aleatória
Defina o intervalo de hiperparâmetros e faça uma amostragem aleatória do intervalo definido de hiperparâmetros
Avalie a precisão do reconhecimento por meio de dados de verificação (mas defina a época muito pequena)
Repita o procedimento acima (100 vezes, etc.) e restrinja o intervalo de hiperparâmetros com base nos resultados de sua precisão de reconhecimento
Otimização bayesiana
Alocação dinâmica de recursos
regularização de rede
Objetivo: suprimir o overfitting
perda de peso
A redução de peso é um método frequentemente usado para suprimir o overfitting. Este método penaliza grandes pesos durante o processo de aprendizagem.
Simplificando, a função de perda torna-se
λ é um hiperparâmetro que controla a força da regularização
método de descarte
Método de abandono
Se o modelo de rede se tornar muito complexo, será difícil lidar com ele usando apenas a redução de peso.
O método de exclusão aleatória de neurônios durante o processo de aprendizagem opta por descartar neurônios aleatoriamente a cada vez. A maneira mais simples é definir uma probabilidade fixa p. Para cada neurônio, existe uma probabilidade p para determinar se deve retê-lo.
aumento de dados
Girar, inverter, dimensionar, traduzir, adicionar ruído
suavização de rótulo
Adicione ruído aos rótulos de saída para evitar ajuste excessivo do modelo
Método de aprendizagem independente do modelo
Aprendizagem em conjunto
Integre vários modelos por meio de uma determinada estratégia para melhorar a precisão da tomada de decisões por meio da tomada de decisões em grupo. A principal questão na aprendizagem em conjunto é como integrar vários modelos. As estratégias de integração mais comumente usadas incluem média direta, média ponderada, etc.
Autotreinamento e treinamento colaborativo
Todos pertencem à aprendizagem semissupervisionada
autotreinamento
O autotreinamento consiste primeiro em usar dados rotulados para treinar um modelo e usar esse modelo para prever os rótulos de amostras não rotuladas, adicionar amostras com confiança de predição relativamente alta e seus pseudo-rótulos previstos ao conjunto de treinamento e, em seguida, treinar novamente o novo modelo, e continue repetindo esse processo.
treinamento colaborativo
O co-treinamento é um método aprimorado de autotreinamento
Dois classificadores baseados em visões diferentes promovem-se mutuamente. Muitos dados têm perspectivas diferentes que são relativamente independentes.
Devido à independência condicional de diferentes perspectivas, modelos treinados em diferentes perspectivas equivalem à compreensão do problema sob diferentes perspectivas e possuem certa complementaridade. O treinamento colaborativo é um método que utiliza essa complementaridade para realizar o autotreinamento. Primeiro, treine dois modelos f1 e f2 com base em diferentes perspectivas no conjunto de treinamento, depois use f1 e f2 para prever o conjunto de dados não rotulado, selecione amostras com confiança de previsão relativamente alta para adicionar ao conjunto de treinamento e treine novamente duas perspectivas diferentes. modele e repita esse processo.
aprendizagem multitarefa
Os modelos gerais de aprendizado de máquina visam uma única tarefa específica, como reconhecimento de dígitos manuscritos, detecção de objetos, etc. Modelos para diferentes tarefas são aprendidos separadamente em seus respectivos conjuntos de treinamento.
Se duas tarefas estiverem relacionadas, haverá algum conhecimento partilhado entre elas, e esse conhecimento será útil para ambas as tarefas. Esse conhecimento compartilhado pode ser representações (recursos), parâmetros de modelo ou algoritmos de aprendizagem, etc.
tipo
transferir aprendizagem
Se houver uma tarefa relacionada que já possua uma grande quantidade de dados de treinamento, embora a distribuição desses dados de treinamento seja diferente daquela da tarefa alvo, devido à escala relativamente grande dos dados de treinamento, assumimos que podemos aprender alguns conhecimento generalizável a partir dele, então esse conhecimento será útil para as tarefas do Target e será de alguma ajuda. Como transferir o conhecimento generalizável nos dados de treinamento de tarefas relacionadas para a tarefa alvo é o problema a ser resolvido pela aprendizagem por transferência.
A aprendizagem por transferência refere-se ao processo de transferência de conhecimento entre dois campos diferentes, utilizando o conhecimento aprendido no domínio de origem (Domínio de Origem) DS para auxiliar nas tarefas de aprendizagem no domínio de destino (Domínio de Destino) DT. O número de amostras de treinamento no domínio de origem é geralmente muito maior do que no domínio de destino.
Classificação
aprendizagem por transferência indutiva
Um modelo é aprendido no conjunto de dados de treinamento que minimiza o risco esperado (ou seja, a taxa de erro na distribuição real dos dados).
Derivando a aprendizagem por transferência
Aprenda um modelo que minimiza erros em um determinado conjunto de testes
O ajuste fino é um método de aplicação de aprendizagem por transferência. Geralmente se refere ao uso de novos conjuntos de dados específicos de tarefas para realizar treinamento adicional com base em um modelo já treinado para melhorar o desempenho do modelo em uma tarefa específica. O objetivo do ajuste fino é usar o conhecimento geral aprendido pelo modelo pré-treinado em dados de grande escala para acelerar e otimizar o processo de aprendizagem em tarefas específicas.
formação contínua
pergunta
Após a conclusão do treinamento, o modelo permanece fixo e não é mais atualizado iterativamente.
Ainda é muito difícil para um modelo ter sucesso em muitas tarefas diferentes ao mesmo tempo.
A Aprendizagem ao Longo da Vida, também chamada de Aprendizagem Contínua, refere-se à capacidade de aprendizagem contínua como os humanos, usando a experiência e o conhecimento aprendidos em tarefas históricas para ajudar a aprender novas tarefas que surgem constantemente, e essas experiências e Conhecimento são continuamente acumulados e não mudarão por causa de novas tarefas e esquecer conhecimentos antigos.
Na aprendizagem ao longo da vida, assume-se que um algoritmo de aprendizagem ao longo da vida aprendeu um modelo nas tarefas históricas T1, T2, · · · , Tm Quando uma nova tarefa Tm 1 aparece, este algoritmo pode aprender um modelo com base nas tarefas anteriores aprendidas. m tarefas. conhecimento para ajudar na m 1ª tarefa, ao mesmo tempo que acumula conhecimento em todas as m 1 tarefas.
Essa configuração é muito semelhante à aprendizagem por transferência indutiva, mas o objetivo da aprendizagem por transferência indutiva é otimizar o desempenho da tarefa alvo sem se preocupar com o acúmulo de conhecimento. O objetivo da aprendizagem ao longo da vida é a aprendizagem contínua e a acumulação de conhecimento. Além disso, ao contrário da aprendizagem multitarefa, a aprendizagem ao longo da vida não envolve a aprendizagem de todas as tarefas simultaneamente.
meta-aprendizagem
De acordo com o teorema do almoço grátis, nenhum algoritmo de aprendizagem universal é eficaz em todas as tarefas. Portanto, ao usar algoritmos de aprendizado de máquina para implementar uma determinada tarefa, geralmente precisamos "discutir o assunto" e escolher o modelo apropriado, função de perda, algoritmo de otimização e hiperparâmetros com base nas tarefas específicas.
A capacidade de ajustar dinamicamente seus próprios métodos de aprendizagem é chamada de meta-aprendizagem, também conhecida como aprendizagem de aprendizagem.
Outro problema de aprendizado de máquina relacionado ao meta-aprendizado é o aprendizado de pequenas amostras
Dois métodos típicos de meta-aprendizagem
Meta-aprendizado baseado em otimizador
A diferença entre os diferentes algoritmos de otimização está nas diferentes regras de atualização dos parâmetros. Portanto, um meta-aprendizado natural é aprender automaticamente uma regra para atualizar os parâmetros, ou seja, modelar o processo de descida do gradiente através de outra rede neural (como uma neural recorrente). rede).
Meta-aprendizagem independente de modelo
É um algoritmo de meta-aprendizado simples, independente de modelo e de tarefa.