Oliver quer deixar o trabalho? AI servir-lhe com papéis para completá-lo!

Qual assunto você mais odeia? Você já pensou, com AI para salvar você odeia o trabalho do curso? Por exemplo, para você escrever artigos? Depois de ler este artigo, você pode dominar esta habilidade, oh.

RNN

As redes neurais têm vindo a tentar resolver um problema é os dados do pedido e os dados temporal. necessidades de redes neurais tradicionais para ter uma entrada de tamanho fixo e saída.

Como você pode ver sobre alguém cair da escada para o vídeo que você quer que aconteça para treinar uma rede neural para classificar o vídeo. Uma rede neural comum pode dizer a pessoa de pé no primeiro frame do vídeo. Então ele pode ser capaz de ver o quadro entre eles, até atingir o último quadro do vídeo e ele viu um homem cair. Mas uma vez que ele chegou lá, as pessoas vão esquecer essa pessoa está de pé, em primeiro lugar.

rede neural recorrente para as suas obras e ajuda para resolver estes problemas. Em um nível alto, RNN para trabalhar através de cada ciclo. Antes, em seguida, transmitidos para a execução da rede neural, ele recebe algumas informações a partir da primeira iteração no segundo passe para frente para obter mais contexto para uma segunda previsão.

Display "expandido" diagrama RNN em que as informações são transferidas entre as iterações.

Informações desde o início pode ser substancialmente transmitido em toda a rede. Agora podemos entender a rede se alguém realmente caiu da escada!

tipo de RNN

RNN arrefecer porque eles não necessitam de uma entrada ou de saída fixa, pode aceitar a entrada e gera uma sequência de saída.

1. One to One: Este é basicamente uma rede neural convencional. Ele fornece uma constante entrada e uma saída fixa.

2. muitos: Este RNN recebe uma entrada e proporcionar uma pluralidade de saídas. O que você pode fazer é primeira saída é realimentada para a rede neural para gerar outra saída, os resultados de volta para a rede neural alimentados. Isso é chamado de amostragem em rede neural, ao fazê-lo, você pode gerar uma nova sequência.

3. MUITOS: RNN receber uma pluralidade de entradas e para fornecer uma única saída. Isto é usado para aplicações tais como análise de sentimentos, você pode fornecer um texto em que as redes neurais e prever o seu humor ou emoções. seqüência de saída pode ser palavras em uma frase, a saída da rede neural pode ser previsto sobre o humor.

4-muitos: RNN usando este tipo de uma pluralidade de entrada e gerando uma pluralidade de sequências de saída. Na verdade, existem dois tipos de many-RNN. Quando as duas sequências não têm necessariamente o mesmo comprimento, utilizando o primeiro tipo. Para aplicações como tradução automática, a entrada pode ser em Inglês ou qualquer outra língua da sentença, a saída sentença pode ser francês ou outras línguas. Neste caso, as palavras de entrada e de saída podem ser diferentes, de modo que este tipo de rede se torna útil para-muitos. Entrada e de saída através do segundo tipo de sincronização. Se marcar cada quadro do vídeo, podemos introduzir um quadro, uma saída de etiquetas e, em seguida, continuar a procurar o resto do vídeo.

problema RNN

Até agora, RNN parecia perfeito, certo? Nós usamos esta nova rede, a fim de melhor rede do que a maneira tradicional de operar seqüência de dados. Um problema é o desaparecimento do problema gradiente RNN / explosão.

Os resultados das desaparece imagem gradiente

Quando você usa o gradiente modelo de back-propagação é atualizado e o cálculo de danos (modelo quão errado), gradiente menor e menor, mais distante o get distância na rede. Isso significa, basicamente, mais camadas de rede, menor a eficiência do treinamento. gradiente de explosão é basicamente o oposto, se o gradiente é muito grande, ele é como uma avalanche, como de propagação para trás, e porque RNN passado por várias iterações e sequências, de modo que o problema desaparecer e / ou explosão existe gradiente.

A memória de curto prazo longo prazo

Uma solução para este problema é a utilização LSTM, células de memória de curto e longo prazo. Ele contém uma série de fórmulas matemáticas, RNN pode ajudar a resolver o problema do desaparecimento do gradiente, e uma previsão mais precisa. Ao usar LSTM, por favor considere há quatro peças de informação: a longo prazo memória, memória de curto prazo, eventos e saída. unidade LSTM fornece uma saída com base no evento, e considerar a memória de longo prazo e memória de curto prazo ao fazer uma previsão.

A figura mostra um exemplo de como a atualização de informações em uma unidade LSTM

Conceitualmente, LSTM tem quatro portas: Porta esquecida, a porta para a aprendizagem, memória e utilizar a porta para a porta. memória de longo prazo é transferido para a porta do esquecimento, esquecendo informações desnecessárias, memória de curto prazo e aprendendo eventos na porta, senão informações úteis. LTM, STM e eventos adicionados à porta de memória, e depois armazenados na actualização de LTM, e três pedaços de informação também é passado para o uso da porta, para prever (STM) lá.

Gráfico que mostra a construção e a disposição da unidade de portão LSTM

Claro, isso é super simplificado. Mas a questão principal deve ser LSTM muito útil quando se utiliza RNN.

Papéis de escrita usando RNN

Agora que temos uma compreensão básica de RNN funciona, vamos voltar à pergunta original: como escapar de um trabalho que você não gosta?

Podemos conseguir isso usando muitos RNN. Podem ser treinados em uma pilha de papéis em diferentes redes neurais, e amostrados no modelo para gerar novos papel que eu nunca tinha visto antes!

Vamos uso Keras, um modelo para o desenvolvimento da aprendizagem profunda da API Senior. Isto segue no código de exemplo Keras repositório no GitHub para gerar texto usando LSTM.

Vamos primeiro importar todas as bibliotecas e módulos necessários.

de keras.callbacks importLambdaCallback de keras.models importSequential de keras.layers Dense importação de keras.layers LSTM importação de keras.optimizers importAdam de get_file keras.utils.data_utilsimport importar numpy como np importação aleatória sys importação import io

Qualquer texto pode ser usado. Por exemplo, vamos usar escritos de Nietzsche. Importar arquivos de texto, alguns pré-processamento, e os valores do vetor.

caminho = get_file ( 'Nietzsche.txt', origem = 'https: //s3.amazonaws.com/text-datasets/nietzsche.txt') com io.open (caminho, que codifica = 'utf-8'), como f: text = f.read (). diminuir () imprimir ( 'comprimento corpus:', len (texto)) chars = ordenada (lista (set (texto))) imprimir ( 'caracteres totais:', len (caracteres)) char_indices = Dict ((c, i) fori, c em enumerar (caracteres)) indices_char = Dict ((i, c) fori, c em enumerar (caracteres)) # Cortar o texto em semi-redundantsequences de caracteres maxlen maxlen = 40 passo 3 = frases = next_chars = para i no intervalo (0, len (texto) -maxlen, etapa): sentences.append (texto ) next_chars.append (texto ) imprimir ( 'seqüências nb:', len (frases)) imprimir ( 'Vectorization ...') x = np.zeros ((len (frases), maxlen, len (caracteres)), dtipo = np.bool) y = ((np.zeros len (frases), LEN (caracteres)), dtipo = np.bool) Pois eu, frase inenumerate (frases): para t, char em enumerar (frase): X = 1 y = 1

Agora é a hora da operação real do modelo. Ele é composto de uma única LSTM, usando Adam otimizador.

modelo sequencial = () model.add (LSTM (128, input_shape = (MAXLEN, LEN (caracteres)))) model.add (Densa (len (caracteres), a activação = 'softmax')) optimizador = Adam (lr = 0,01) model.compile (perda = 'categorical_crossentropy', optimizador = optimizador)

Agora definir as duas funções, de amostra (amostra): uma função de auxiliar de um índice da amostra de probabilidade da matriz, e no final de cada amostra (on_epoch_end): Trata-se de uma chamada de função, no final de cada época, e impresso por texto modelo gerado.

def amostra (Preds, temperatura = 1,0): Preds = np.asarray (Preds) .astype ( 'float64') Preds = np.log (Preds) / temperatura exp_preds = np.exp (Preds) Preds = exp_preds / np.sum (exp_preds) probas = np.random.multinomial (1, Preds, 1) retorno np.argmax (probas) def on_epoch_end (época, _): imprimir () imprimir ( '----- texto Geração após Epoch:% d' % época) start_index = random.randint (0, len (texto) -maxlen - 1) para diversidade em : imprimir ( '----- diversidade:', diversidade) gerado = '' sentença = text gerado + = frase imprimir ( '----- Generating com a semente: "' + pena + '"') sys.stdout.write (gerado) para i na gama (400): x_pred = np.zeros ((1, MAXLEN, LEN (caracteres))) para t, char em enumerar (frase): x_pred = 1. Preds = model.predict (x_pred, verbose = 0) next_index = amostra (Preds, diversidade) next_char = indices_char gerado + = next_char frase = frase + next_char sys.stdout.write (next_char) sys.stdout.flush () imprimir ()

Nós quase lá! Finalmente, vamos escrever a função de retorno, onde veremos a saída de texto e modelo ajustar os dados.

print_callback = LambdaCallback (on_epoch_end = on_epoch_end) model.fit (x, y, batch_size = 128, épocas = 60, callbacks = )

É isso aí. Todo o treinamento estes modelo de treinamento no Google Colab quando ele levou cerca de três horas, você também pode usar a GPU para rodar em seu computador. Em teoria, o texto resultante deve começar após cerca de 30 vezes consecutivas, então vamos olhar para a saída do modelo.

"Patienceare desenvolveu-nosso primeiro sentido, que o mundo da theprocess como da mesma forma para a reverência, e o dono da synthesionand o mesmo ritmo dos sensues-lo e e como o todo manso eo exceto ofthe livre da contradição de Existe não que a moralidade e falta de theplace para todo o homem da tempope "de todos exclive moral a alma aos bons hasalways aos seus estandes tem do chrison ao perigo da super" "Poderia considerar até mesmo as emoções de ódio, ordo a conduta, e uma instâncias do tem uma wele ser enterer do estado ofthe religião na alma, os represens e de acordo e pode ser a feelingsof a acima de todas as religiões e uma luta da sentidos standsand bem entiblent podem todos suffett da conduta dos Soutes de seu assunto, e dependersfor a religião que não é como os sentimentos de quem suphriated sentido de thest "

Ah ...... esta digite o resultado não parece particularmente bom. Mas estes são produzidos pela rede neural, isso não é legal? Não há dúvida, através de uma melhor infra-estrutura e de dados mais extensa, você pode provavelmente começar escrito e conteúdo humano, independentemente do resultado.

As principais conclusões

processamento de linguagem natural está sendo feito agora descoberta incrível, a geração de texto é realmente muito interessante. Você deve ter em mente os seguintes pontos-chave:

1. Salvo rede neural recorrente com redes neurais tradicionais é a sua capacidade de conservar os dados por um anterior iteração melhor previsão.

2. Existem muitos tipos diferentes de RNN-- incluem um para um, de um para muitos, muitos-para-muitos, são adequados para cada tarefa específica.

3. A porta da memória de curto e longo prazo (LSTM) para resolver o problema desaparecer gradiente de RNN e informações de longo prazo também é usado na conexão de rede neural.

Seguro de manter 2.900 índice de ações caiu 3,8% A-share repetição mil ações limite diário! O próximo mercado vai ser como ir?
Anterior
"Heróis: o Flash rastrear 3" coleção OST jogo trilha sonora à venda
Próximo