1. ProgramaçãoBig DataData ScienceData Science Programming All-in-One For Dummies Cheat Sheet
Conceito de código de programação de ciência de dados
  1. Aprendizado de máquina vs. aprendizado profundo: explicando as diferenças de aprendizado profundo de outras formas de IA

Por John Paul Mueller, Luca Mueller

Dado o embaraço das riquezas que pertencem à IA como um todo, como grandes quantidades de dados, hardware computacional novo e poderoso disponível para todos e muitos investimentos públicos e privados, você pode estar cético sobre a tecnologia por trás do aprendizado profundo, que consiste em de redes neurais que têm mais neurônios e camadas ocultas do que no passado. Redes profundas contrastam com as redes mais simples e rasas do passado, que apresentavam uma ou duas camadas ocultas, na melhor das hipóteses. Muitas soluções que tornam possível o aprendizado profundo hoje não são de todo novas, mas o aprendizado profundo as utiliza de novas maneiras.

O aprendizado profundo não é simplesmente o rebranding de uma tecnologia antiga, a perceptron, descoberta em 1957 por Frank Rosenblatt no Laboratório Aeronáutico de Cornell. O aprendizado profundo funciona melhor devido à sofisticação extra que ele acrescenta ao uso completo de computadores poderosos e à disponibilidade de dados melhores (e não apenas mais). O aprendizado profundo também implica uma profunda mudança qualitativa nos recursos oferecidos pela tecnologia, juntamente com aplicativos novos e surpreendentes. A presença desses recursos moderniza redes neurais antigas, mas boas, transformando-as em algo novo. O artigo a seguir descreve como a aprendizagem profunda realiza sua tarefa.

Adicionando mais camadas para aprendizado profundo

Você pode se perguntar por que o aprendizado profundo floresceu apenas agora quando a tecnologia usada como base do aprendizado profundo existia há muito tempo. Atualmente, os computadores são mais poderosos e o aprendizado profundo pode acessar grandes quantidades de dados. No entanto, essas respostas apontam apenas para problemas importantes com aprendizado profundo no passado, e menor poder de computação e menos dados não foram os únicos obstáculos intransponíveis. Até recentemente, o aprendizado profundo também sofria de um problema técnico importante que impedia as redes neurais de terem camadas suficientes para executar tarefas verdadeiramente complexas.

Como ele pode usar muitas camadas, o aprendizado profundo pode resolver problemas fora do alcance do aprendizado de máquina, como reconhecimento de imagem, tradução automática e reconhecimento de fala. Quando equipada com apenas algumas camadas, uma rede neural é um aproximador de função universal perfeito, que é um sistema que pode recriar qualquer função matemática possível. Quando equipada com muito mais camadas, uma rede neural se torna capaz de criar, dentro de sua cadeia interna de multiplicações de matrizes, um sofisticado sistema de representações para resolver problemas complexos. Para entender como uma tarefa complexa como o reconhecimento de imagem funciona, considere este processo:

  1. Um sistema de aprendizado profundo treinado para reconhecer imagens (como uma rede capaz de distinguir fotos de cães daquelas com gatos) define pesos internos que têm a capacidade de reconhecer um tópico de imagem. Depois de detectar cada contorno e canto da imagem, a rede de aprendizado profundo reúne todos esses traços básicos em características características compostas. A rede combina esses recursos com uma representação ideal que fornece a resposta.

Em outras palavras, uma rede de aprendizado profundo pode distinguir cães de gatos usando seus pesos internos para definir uma representação do que, idealmente, um cão e um gato devem se parecer. Ele usa esses pesos internos para corresponder a qualquer nova imagem fornecida.

Uma das primeiras conquistas do aprendizado profundo que conscientizou o público sobre sua potencialidade é o neurônio do gato. A equipe do Google Brain, dirigida por Andrew Ng e Jeff Dean, reuniu 16.000 computadores para calcular uma rede de aprendizado profundo com mais de um bilhão de pesos, possibilitando assim o aprendizado não supervisionado de vídeos do YouTube. A rede de computadores pode até determinar por si mesma, sem nenhuma intervenção humana, o que é um gato, e os cientistas do Google conseguiram extrair da rede uma representação de como a própria rede esperava que um gato fosse (veja o artigo da Wired discutindo redes neurais) .

Durante o tempo em que os cientistas não conseguiram empilhar mais camadas em uma rede neural por causa dos limites do hardware do computador, o potencial da tecnologia permaneceu oculto e os cientistas ignoraram as redes neurais. A falta de sucesso aumentou o profundo ceticismo que surgiu em torno da tecnologia durante o último inverno da IA. No entanto, o que realmente impediu os cientistas de criar algo mais sofisticado foi o problema dos gradientes que desapareciam.

Um gradiente de fuga ocorre quando você tenta transmitir um sinal através de uma rede neural e o sinal diminui rapidamente para valores próximos de zero; não pode passar pelas funções de ativação. Isso acontece porque as redes neurais são multiplicações encadeadas. Cada multiplicação abaixo de zero diminui os valores recebidos rapidamente, e as funções de ativação precisam de valores suficientemente grandes para permitir a passagem do sinal. Quanto mais camadas de neurônios saírem da saída, maior a probabilidade de elas ficarem bloqueadas nas atualizações porque os sinais são muito pequenos e as funções de ativação os interromperão. Consequentemente, sua rede para de aprender como um todo ou aprende em um ritmo incrivelmente lento.

Todas as tentativas de montar e testar redes complexas terminavam em falha porque o algoritmo de retropropagação não conseguia atualizar as camadas mais próximas da entrada, tornando praticamente impossível o aprendizado de dados complexos, mesmo quando esses dados estavam disponíveis no momento. Hoje, redes profundas são possíveis graças aos estudos de pesquisadores da Universidade de Toronto, no Canadá, como Geoffrey Hinton, que insistia em trabalhar em redes neurais, mesmo quando elas pareciam ser uma abordagem antiquada de aprendizado de máquina.

O professor Hinton, um veterano no campo das redes neurais (ele contribuiu para definir o algoritmo de retropropagação), e sua equipe em Toronto inventaram alguns métodos para contornar o problema dos gradientes de fuga. Ele abriu o campo para repensar novas soluções que tornavam as redes neurais uma ferramenta crucial no aprendizado de máquina e na IA novamente.

O professor Hinton e sua equipe também são memoráveis ​​por estarem entre os primeiros a testar o uso da GPU, a fim de acelerar o treinamento de uma rede neural profunda. Em 2012, eles venceram um concurso aberto, organizado pela empresa farmacêutica Merck e Kaggle (este último site de concursos de ciência de dados), usando suas descobertas mais recentes de aprendizado profundo. Este evento trouxe grande atenção ao seu trabalho. Você pode ler todos os detalhes da conquista revolucionária da equipe de Hinton com camadas de redes neurais nesta entrevista de Geoffrey Hinton.

Alterando as ativações para o aprendizado profundo

A equipe de Geoffrey Hinton conseguiu adicionar mais camadas a uma arquitetura neural por causa de duas soluções que evitavam problemas com a retropropagação:

  • Eles impediram o problema de gradientes explosivos usando uma inicialização de rede mais inteligente. Um gradiente de explosão difere de um gradiente de fuga porque pode fazer a rede explodir à medida que o gradiente de explosão se torna muito grande para ser manipulado. Sua rede pode explodir, a menos que você a inicialize corretamente para impedir que calcule grandes números de peso. Em seguida, você resolve o problema de desaparecer gradientes alterando as ativações da rede. A equipe percebeu que a passagem de um sinal através de várias camadas de ativação tendia a amortecer o sinal de retropropagação até que se tornasse muito fraco para passar depois de examinar como a ativação sigmóide funcionava. Eles usaram uma nova ativação como a solução para esse problema. A escolha de qual algoritmo usar caiu em direção a um tipo de ativação antigo da ReLU, que significa unidades lineares retificadas. Uma ativação de ReLU interrompeu o sinal recebido se estivesse abaixo de zero, garantindo a característica de não linearidade das redes neurais e deixando o sinal passar como se estivesse acima de zero. (O uso desse tipo de ativação é um exemplo de combinação de tecnologia antiga, mas ainda boa, com a tecnologia atual.) A imagem abaixo mostra como esse processo funciona.
Função de ativação ReLU na aprendizagem profunda

A ReLU funcionou incrivelmente bem e permitiu que o sinal de retropropagação chegasse às camadas profundas iniciais da rede. Quando o sinal é positivo, sua derivada é 1. Você também pode encontrar uma prova da derivada ReLU na procura. Observe que a taxa de mudança é constante e equivalente a uma unidade quando o sinal de entrada é positivo (enquanto que quando o sinal é negativo, a derivada é 0, impedindo a passagem do sinal).

Você pode calcular a função ReLU usando f (x) = max (0, x). O uso desse algoritmo aumentou muito a velocidade de treinamento, permitindo o treinamento rápido de redes ainda mais profundas sem a ocorrência de neurônios mortos. Um neurônio morto é aquele que a rede não pode ativar porque os sinais são muito fracos.

Adicionando regularização por desistência para aprendizado profundo

A outra introdução ao aprendizado profundo feita pela equipe de Hinton para concluir a solução inicial de aprendizado profundo que visa regularizar a rede. Uma rede regularizada limita os pesos da rede, o que impede a rede de memorizar os dados de entrada e generalizar os padrões de dados testemunhados.

Lembre-se de que certos neurônios memorizam informações específicas e forçam os outros a confiarem nesse neurônio mais forte, fazendo com que os neurônios fracos desistam de aprender qualquer coisa útil (uma situação chamada co-adaptação). Para impedir a co-adaptação, o código temporariamente desativa a ativação de uma porção aleatória de neurônios na rede.

Como você vê no lado esquerdo da imagem abaixo, os pesos normalmente operam multiplicando suas entradas em saídas para as ativações. Para desativar a ativação, o código multiplica uma máscara feita de uma mistura aleatória de uns e zeros com os resultados. Se o neurônio é multiplicado por um, a rede passa seu sinal. Quando um neurônio é multiplicado por zero, a rede interrompe seu sinal, forçando outros neurônios a não confiar nele no processo.

abandono do aprendizado profundo

A desistência funciona apenas durante o treinamento e não toca em nenhuma parte dos pesos. Simplesmente mascara e oculta parte da rede, forçando a parte não mascarada a assumir um papel mais ativo na aprendizagem de padrões de dados. Durante o tempo de previsão, o abandono não funciona e os pesos são redimensionados numericamente para levar em conta o fato de que eles não trabalharam juntos durante o treinamento.

  1. O JavaScript é necessário para o funcionamento completo desta página.

Por John Paul Mueller, Luca Mueller

A análise de sentimentos deriva computacionalmente de um texto escrito usando a atitude do escritor (positiva, negativa ou neutra) em relação ao tópico do texto. Esse tipo de análise se mostra útil para as pessoas que trabalham em marketing e comunicação porque as ajuda a entender o que os clientes e os consumidores pensam de um produto ou serviço e, assim, agem adequadamente (por exemplo, tentando recuperar clientes insatisfeitos ou decidindo usar uma estratégia de vendas diferente). ) Todos realizam análises de sentimentos. Por exemplo, ao ler o texto, as pessoas naturalmente tentam determinar o sentimento que moveu a pessoa que o escreveu. No entanto, quando o número de textos para ler e entender é muito grande e o texto acumula constantemente, como nas mídias sociais e nos e-mails dos clientes, é importante automatizar a análise de sentimentos.

Análise de sentimentos de IA

O próximo exemplo é uma execução de teste de RNNs usando Keras e TensorFlow que cria um algoritmo de análise de sentimentos capaz de classificar as atitudes expressas em uma crítica de cinema. Os dados são uma amostra do conjunto de dados da IMDb que contém 50.000 críticas (divididas ao meio entre conjuntos de trens e testes) de filmes acompanhadas por um rótulo que expressa o sentimento da crítica (0 = negativo, 1 = positivo). O IMDb é um grande banco de dados online que contém informações sobre filmes, séries de TV e videogames. Originalmente mantido por uma base de fãs, agora é administrado por uma subsidiária da Amazon. No IMDb, as pessoas encontram as informações de que precisam sobre seu programa favorito, além de postar seus comentários ou escrever uma crítica para outros visitantes lerem.

Keras oferece um pacote para download de dados da IMDb. Você prepara, embaralha e organiza esses dados em um trem e um conjunto de testes. Em particular, os dados textuais da IMDb oferecidos por Keras são limpos de pontuação, normalizados em minúsculas e transformados em valores numéricos. Cada palavra é codificada em um número que representa sua classificação em frequência. As palavras mais frequentes têm números baixos; palavras menos frequentes têm números mais altos.

Como ponto de partida, o código importa a função imdb do Keras e a utiliza para recuperar os dados da Internet (cerca de um download de 17,5 MB). Os parâmetros que o exemplo usa abrangem apenas as 10.000 palavras principais e o Keras deve embaralhar os dados usando uma semente aleatória específica. (O conhecimento da semente possibilita a reprodução aleatória conforme necessário.) A função retorna dois conjuntos de trem e teste, ambos feitos de seqüências de texto e o resultado do sentimento.

de keras.datasets import imdb
top_words = 10000
((x_train, y_train),
(x_test, y_test)) = imdb.load_data (num_words = top_words,
semente = 21)

Após a conclusão do código anterior, você pode verificar o número de exemplos usando o seguinte código:

print ("Exemplos de treinamento:% i"% len (x_train))
print ("Exemplos de teste:% i"% len (x_test))

Após indagar sobre o número de casos disponíveis para uso na fase de treinamento e teste da rede neural, o código gera uma resposta de 25.000 exemplos para cada fase. (Esse conjunto de dados é relativamente pequeno para um problema de idioma; claramente o conjunto de dados é principalmente para fins de demonstração.) Além disso, o código determina se o conjunto de dados é equilibrado, o que significa que ele tem um número quase igual de exemplos de sentimentos positivos e negativos.

importar numpy como np
print (np.unique (y_train, return_counts = True))

O resultado, matriz ([12500, 12500]), confirma que o conjunto de dados é dividido igualmente entre resultados positivos e negativos. Esse equilíbrio entre as classes de resposta é exclusivamente devido à natureza demonstrativa do conjunto de dados. No mundo real, você raramente encontra conjuntos de dados equilibrados. A próxima etapa cria alguns dicionários Python que podem ser convertidos entre o código usado no conjunto de dados e as palavras reais. De fato, o conjunto de dados usado neste exemplo é pré-processado e fornece seqüências de números representando as palavras, não as próprias palavras. (Os algoritmos LSTM e GRU encontrados em Keras esperam sequências de números como números.)

word_to_id = {w: i ​​+ 3 para w, i em imdb.get_word_index (). items ()}
id_to_word = {0: '', 1: '', 2: ''}
id_to_word.update ({i + 3: w para w, i em imdb.get_word_index (). items ()})
def convert_to_text (sequência):
return '' .join ([id_to_word [s] para s em sequência se s> = 3])
print (convert_to_text (x_train [8]))

O snippet de código anterior define dois dicionários de conversão (de palavras para códigos numéricos e vice-versa) e uma função que traduz os exemplos de conjuntos de dados em texto legível. Como exemplo, o código imprime o nono exemplo: “esse filme foi como um tremendo acidente tão horrível quanto…”. A partir deste trecho, você pode facilmente prever que o sentimento para este filme não é positivo. Palavras como ruim, naufrágio e horrível transmitem um forte sentimento negativo, e isso facilita a adivinhação do sentimento correto.

Neste exemplo, você recebe as seqüências numéricas e as transforma em palavras, mas o oposto é comum. Geralmente, você obtém frases compostas de palavras e as transforma em seqüências de números inteiros para alimentar uma camada de RNNs. O Keras oferece uma função especializada, o Tokenizer, que pode fazer isso por você. Ele usa os métodos fit_on_text, para aprender como mapear palavras para números inteiros a partir de dados de treinamento, e examples_to_matrix, para transformar texto em uma sequência.

No entanto, em outras frases, você pode não encontrar essas palavras reveladoras para a análise de sentimentos. O sentimento é expresso de uma maneira mais sutil ou indireta, e a compreensão do sentimento no início do texto pode não ser possível porque frases e palavras reveladoras podem aparecer muito mais tarde no discurso. Por esse motivo, você também precisa decidir quanto da frase deseja analisar.

Convencionalmente, você pega uma parte inicial do texto e a usa como representante de toda a revisão. Às vezes, você só precisa de algumas palavras iniciais - por exemplo, as primeiras 50 palavras - para entender; às vezes você precisa de mais. Os textos especialmente longos não revelam sua orientação cedo. Portanto, cabe a você entender o tipo de texto com o qual está trabalhando e decidir quantas palavras analisar usando o aprendizado profundo. Este exemplo considera apenas as 200 primeiras palavras, o que deve ser suficiente.

Você notou que o código começa a dar código para palavras começando com o número 3, deixando códigos de 0 a 2. Números mais baixos são usados ​​para tags especiais, como sinalizar o início da frase, preenchendo espaços vazios para corrigir a sequência em um determinado comprimento e marcar as palavras que são excluídas porque não são frequentes o suficiente. Este exemplo captura apenas as 10.000 palavras mais frequentes. Usar tags para apontar situações de início, fim e notáveis ​​é um truque que funciona com RNNs, especialmente para tradução automática.

de keras.preprocessing.sequence import pad_sequences
max_pad = 200
x_train = pad_sequences (x_train,
maxlen = max_pad)
x_test = pad_sequences (x_test,
maxlen = max_pad)
impressão (x_train [0])

Usando a função pad_sequences do Keras com max_pad definido como 200, o código recebe as primeiras duzentas palavras de cada revisão. Caso a revisão contenha menos de duzentas palavras, o número de zero necessário precede a sequência para atingir o número necessário de elementos da sequência. Cortar as seqüências em um determinado comprimento e preencher os vazios com valores zero é chamado de preenchimento de entrada, uma atividade de processamento importante ao usar RNNs como algoritmos de aprendizado profundo. Agora o código cria a arquitetura:

de keras.models import Sequential
de keras.layers importam Bidirecional, Denso, Dropout
de keras.layers importam GlobalMaxPool1D, LSTM
de keras.layers.embeddings import Incorporação
embedding_vector_length = 32
model = Sequencial ()
model.add (incorporação (top_words,
embedding_vector_length,
input_length = max_pad))
model.add (bidirecional (LSTM (64, return_sequences = True))))
model.add (GlobalMaxPool1D ())
model.add (denso (16, ativação = "relu"))
model.add (Denso (1, ativação = "sigmóide"))
model.compile (loss = 'binary_crossentropy',
otimizador = 'adam',
métricas = ['precisão'])
print (model.summary ())

O snippet de código anterior define a forma do modelo de aprendizado profundo, onde ele usa algumas camadas especializadas para o processamento de linguagem natural do Keras. O exemplo também exigiu um resumo do modelo (comando model.summary ()) para determinar o que está acontecendo com a arquitetura usando diferentes camadas neurais.

Você tem a camada Incorporação, que transforma as seqüências numéricas em uma incorporação densa de palavras. Esse tipo de incorporação de palavras é mais adequado para ser aprendido por uma camada de RNNs. O Keras fornece uma camada de incorporação, que, além de ser necessariamente a primeira camada da rede, pode realizar duas tarefas:

  • Aplicando incorporação de palavras pré-treinadas (como Word2vec ou GloVe) à entrada de sequência. Você só precisa passar a matriz que contém a incorporação para seus pesos de parâmetro. Criando uma incorporação de palavras do zero, com base nas entradas que recebe.

Nesse segundo caso, a incorporação precisa apenas saber:

  • input_dim: o tamanho do vocabulário esperado dos dados output_dim: o tamanho do espaço de incorporação que será produzido (as chamadas dimensões) input_length: o tamanho da sequência a ser esperada

Depois de determinar os parâmetros, a Incorporação encontrará os melhores pesos para transformar as seqüências em uma matriz densa durante o treinamento. O tamanho denso da matriz é dado pelo comprimento das sequências e pela dimensionalidade da incorporação.

Se você usar a camada Incorporação fornecida pelo Keras, lembre-se de que a função fornece apenas uma matriz de peso do tamanho do vocabulário pela dimensão da incorporação desejada. Ele mapeia as palavras para as colunas da matriz e ajusta os pesos da matriz para os exemplos fornecidos. Essa solução, embora prática para problemas de linguagem fora do padrão, não é análoga à incorporação de palavras discutida anteriormente, que é treinada de maneira diferente e em milhões de exemplos.

O exemplo usa o agrupamento bidirecional - uma camada LSTM de 64 células. Bidirecional transforma uma camada LSTM normal dobrando-a: No primeiro lado, aplica a sequência normal de entradas que você fornece; no segundo, passa o inverso da sequência. Você usa essa abordagem porque, às vezes, usa palavras em uma ordem diferente e adequada, e a construção de uma camada bidirecional captura qualquer padrão de palavra, independentemente da ordem. A implementação do Keras é realmente direta: você apenas a aplica como uma função na camada que deseja renderizar bidirecionalmente.

O LSTM bidirecional é configurado para retornar sequências (return_sequences = True); isto é, para cada célula, ele retorna o resultado fornecido depois de ver cada elemento da sequência. Os resultados, para cada sequência, são uma matriz de saída de 200 x 128, em que 200 é o número de elementos da sequência e 128 é o número de células LSTM usadas na camada. Essa técnica impede que o RNN obtenha o último resultado de cada célula LSTM. Dicas sobre o sentimento do texto podem realmente aparecer em qualquer lugar da sequência de palavras incorporada.

Em resumo, é importante não obter o último resultado de cada célula, mas sim o melhor resultado. Portanto, o código se baseia na seguinte camada, GlobalMaxPool1D, para verificar cada sequência de resultados fornecida por cada célula LSTM e reter apenas o resultado máximo. Isso deve garantir que o exemplo capte o sinal mais forte de cada célula LSTM, que, esperamos, seja especializada em seu treinamento para captar alguns sinais significativos.

Depois que os sinais neurais são filtrados, o exemplo possui uma camada de 128 saídas, uma para cada célula LSTM. O código reduz e mistura os sinais usando uma camada densa sucessiva de 16 neurônios com a ativação da ReLU (fazendo com que apenas os sinais positivos passem). A arquitetura termina com um nó final usando a ativação sigmóide, que comprime os resultados no intervalo de 0 a 1 e os faz parecer probabilidades.

Depois de definir a arquitetura, agora você pode treinar a rede para executar a análise de sentimentos. Três épocas (passando os dados três vezes pela rede para que eles aprendam os padrões) serão suficientes. O código usa lotes de 256 revisões a cada vez, o que permite que a rede veja variedade suficiente de palavras e sentimentos antes de atualizar seus pesos usando a retropropagação. Por fim, o código concentra-se nos resultados fornecidos pelos dados de validação (que não fazem parte dos dados de treinamento). Obter um bom resultado com os dados de validação significa que a rede neural está processando a entrada corretamente. O código relata os dados de validação logo após cada época terminar.

history = model.fit (x_train, y_train,
validation_data = (x_test, y_test),
épocas = 3, tamanho do lote = 256)

A obtenção dos resultados demora um pouco, mas se você estiver usando uma GPU, ela será concluída no tempo que você tomar para tomar uma xícara de café. Neste ponto, você pode avaliar os resultados, novamente usando os dados de validação. (Os resultados não devem ter surpresas ou diferenças em relação ao que o código relatou durante o treinamento.)

perda, métrica = model.evaluate (x_test, y_test, detalhado = 0)
print ("Precisão do teste:% 0,3f"% métrica)

A precisão final, que é a porcentagem de respostas corretas da rede neural profunda, terá um valor entre 85 e 86%. O resultado mudará um pouco cada vez que você executar o experimento por causa da randomização ao construir sua rede neural. Isso é perfeitamente normal, considerando o tamanho pequeno dos dados com os quais você está trabalhando. Se você começar com os pesos da sorte certos, o aprendizado será mais fácil em uma sessão de treinamento tão curta.

No final, sua rede é um analisador de sentimentos capaz de adivinhar corretamente o sentimento expresso em uma crítica de cinema cerca de 85% das vezes. Dado ainda mais dados de treinamento e arquiteturas neurais mais sofisticadas, você pode obter resultados ainda mais impressionantes. No marketing, uma ferramenta semelhante é usada para automatizar muitos processos que exigem a leitura de texto e a ação. Novamente, você pode associar uma rede como essa a uma rede neural que ouve uma voz e a transforma em texto. (Essa é outra aplicação das RNNs, agora com Alexa, Siri, Google Voice e muitos outros assistentes pessoais.) A transição permite que o aplicativo entenda o sentimento mesmo em expressões vocais, como uma ligação telefônica de um cliente.

  1. O que você precisa saber para começar o dia bem-informado

Por John Paul Mueller, Luca Mueller

Existem muitos usos diferentes para o aprendizado profundo - tudo, desde os recursos ativados por voz do seu assistente digital até os carros autônomos. Usar o aprendizado profundo para melhorar sua vida diária é bom, é claro, mas a maioria das pessoas precisa de outros motivos para adotar uma tecnologia, como conseguir um emprego. Felizmente, o aprendizado profundo não afeta apenas sua capacidade de localizar informações mais rapidamente, mas também oferece algumas oportunidades de trabalho realmente interessantes, e com o fator "uau" que somente o aprendizado profundo pode proporcionar. Este artigo fornece uma visão geral de dez ocupações interessantes que hoje dependem de aprendizado profundo. Este material representa apenas a ponta do iceberg; estão surgindo mais ocupações que usam aprendizado profundo rapidamente e mais são adicionadas todos os dias.

O aprendizado profundo pode ajudar no gerenciamento de pessoas

Um filme aterrorizante chamado The Circle faria você acreditar que a tecnologia moderna será ainda mais invasiva que o Big Brother no livro 1984, de George Orwell. Parte da história do filme envolve a instalação de câmeras em qualquer lugar - até nos quartos. O personagem principal acorda todas as manhãs para cumprimentar todos que a estão observando. Sim, pode dar-lhe a vontade, se você deixar.

No entanto, o aprendizado profundo real não se trata de monitorar e julgar as pessoas, na maioria das vezes. É mais como a Global Human Resources Cloud da Oracle. Longe de ser assustadora, essa tecnologia em particular pode fazer você parecer inteligente e no topo de todas as atividades do seu dia. O vídeo é um pouco exagerado, mas fornece uma boa idéia de como o aprendizado profundo pode facilitar seu trabalho atualmente.

A idéia por trás dessa tecnologia é facilitar o sucesso das pessoas. Se você olhar o vídeo e os materiais associados da Oracle, descobrirá que a tecnologia ajuda a gerência a sugerir possíveis caminhos para as metas dos funcionários dentro da organização. Em alguns casos, os funcionários gostam da situação atual, mas o software ainda pode sugerir maneiras de tornar seu trabalho mais envolvente e divertido. O software evita que os funcionários se percam no sistema e ajuda a gerenciar o funcionário em um nível personalizado, para que cada funcionário receba informações individualizadas.

O aprendizado profundo melhora a medicina

O aprendizado profundo está afetando a prática da medicina de várias maneiras, como você pode ver quando vai ao médico ou passa algum tempo em um hospital. A aprendizagem profunda auxilia no diagnóstico de doenças e na busca da cura correta. O aprendizado profundo é usado até para melhorar o processo de diagnóstico de problemas difíceis de detectar, incluindo os do olho. No entanto, um dos usos mais importantes para a aprendizagem profunda em medicina está na pesquisa.

O ato aparentemente simples de encontrar os pacientes corretos a serem usados ​​para fins de pesquisa não é tão simples assim. Os pacientes devem atender a critérios rigorosos ou quaisquer resultados dos testes podem ser inválidos. Os pesquisadores agora contam com um aprendizado profundo para realizar tarefas como encontrar o paciente certo, projetar os critérios do estudo e otimizar os resultados. Obviamente, a medicina precisará de muitas pessoas treinadas em medicina e no uso de técnicas de aprendizado profundo da medicina para continuar alcançando avanços no ritmo atual.

O aprendizado profundo ajuda a desenvolver novos dispositivos

A inovação em algumas áreas da tecnologia da computação, como o sistema básico, que agora é uma mercadoria, desacelerou ao longo dos anos. No entanto, a inovação em áreas que só recentemente se tornou viável aumentou bastante. Hoje, um inventor tem mais saídas possíveis para novos dispositivos do que nunca. Uma dessas novas áreas é o meio para realizar tarefas de aprendizado profundo. Para criar o potencial para executar tarefas de aprendizado profundo de maior complexidade, agora muitas organizações usam hardware especializado que excede os recursos das GPUs - a tecnologia de processamento atualmente preferida para o aprendizado profundo.

A tecnologia de aprendizado profundo está em sua infância, então um inventor inteligente poderia criar algo interessante sem realmente trabalhar tanto. Este artigo fala sobre novas tecnologias de IA, mas mesmo essas tecnologias não começam a aprofundar o que poderia acontecer.

O aprendizado profundo está atraindo a atenção de inventores e investidores, devido ao seu potencial de alterar a lei de patentes atual e a maneira pela qual as pessoas criam coisas novas. Uma parte interessante da maioria dos artigos desse tipo é que eles prevêem um aumento significativo de empregos que giram em torno de vários tipos de aprendizado profundo, a maioria dos quais envolve a criação de algo novo. Essencialmente, se você puder usar o aprendizado profundo de alguma forma e associá-lo a uma ocupação vibrante atual, poderá encontrar um emprego ou desenvolver um negócio próprio.

O aprendizado profundo pode fornecer suporte ao cliente

Muitas discussões de aprendizado profundo se referem a chatbots e outras formas de suporte ao cliente, incluindo serviços de tradução. Caso esteja curioso, você pode ter uma experiência interativa com um chatbot no Pandorabots.com. O uso de chatbots e outras tecnologias de suporte ao cliente despertou preocupação, no entanto.

Alguns grupos de consumidores que dizem que o suporte ao cliente humano está condenado, como neste artigo da Forbes. No entanto, se você já teve que lidar com um chatbot para executar algo complexo, sabe que a experiência é menos que atraente. Portanto, o novo paradigma é a combinação humana e chatbot.

Grande parte da tecnologia que você vê hoje em dia supostamente substitui um ser humano, mas na maioria dos casos, não pode. Por enquanto, você deve esperar muitas situações em que humanos e robôs trabalham juntos em equipe. O bot reduz a tensão de realizar tarefas fisicamente intensas, bem como as tarefas mundanas e chatas. O humano fará as coisas mais interessantes e fornecerá soluções criativas para situações inesperadas. Consequentemente, as pessoas precisam obter o treinamento necessário para trabalhar nessas áreas e sentem-se seguras de que continuarão a ter um emprego remunerado.

O aprendizado profundo pode ajudá-lo a ver dados de novas maneiras

Observe uma série de sites e outras fontes de dados e percebe uma coisa: todos apresentam dados de maneira diferente. Um computador não entende as diferenças na apresentação e não é influenciado por uma aparência ou outra. Na verdade, ele não entende dados; procura padrões. O aprendizado profundo está permitindo que os aplicativos coletem mais dados por conta própria, garantindo que o aplicativo possa ver padrões apropriados, mesmo quando esses padrões diferem do que o aplicativo já viu antes. Embora o aprendizado profundo melhore e acelere a coleta de dados, no entanto, um ser humano ainda precisará interpretar os dados. De fato, os humanos ainda precisam garantir que o aplicativo colete bons dados, porque realmente não entende nada sobre dados.

Outra maneira de ver os dados de novas maneiras é executar o aumento de dados. Novamente, o aplicativo faz o trabalho pesado, mas é preciso um ser humano para determinar que tipo de aumento fornecer. Em outras palavras, o humano faz a parte criativa e interessante, e o aplicativo apenas se arrasta, garantindo que as coisas funcionem.

Esses dois primeiros usos do aprendizado profundo são interessantes e continuarão gerando empregos, mas o uso mais interessante do aprendizado profundo é para atividades que ainda não existem. Um ser humano criativo pode procurar maneiras pelas quais os outros estão usando o aprendizado profundo e criar algo novo. Confira alguns usos interessantes de IA, aprendizado de máquina e aprendizado profundo que agora estão se tornando práticos.

O aprendizado profundo pode realizar análises mais rapidamente

Quando a maioria das pessoas fala em análise, pensa em um pesquisador, em algum tipo de cientista ou em um especialista. No entanto, o aprendizado profundo está se entrincheirando em alguns lugares interessantes, que exigirão a participação humana para ter pleno uso, como prever acidentes de trânsito.

Imagine um departamento de polícia alocando recursos com base nos padrões de fluxo de tráfego para que um policial já esteja esperando no local de um acidente esperado. O tenente da polícia precisaria saber como usar um aplicativo desse tipo. Obviamente, esse uso específico ainda não aconteceu, mas provavelmente poderia, porque já é viável usando a tecnologia existente. Portanto, executar a análise não será mais um trabalho para aqueles com "Dr." na frente de seus nomes; será para todos.

A análise, por si só, não é tão útil. É o ato de combinar a análise com uma necessidade específica em um ambiente específico que se torna útil. O que você faz com a análise define o efeito dessa análise sobre você e as pessoas ao seu redor. Um ser humano pode entender o conceito de análise com um propósito; uma solução de aprendizado profundo só pode executar a análise e fornecer uma saída.

O aprendizado profundo pode ajudar a criar um melhor ambiente de trabalho

O aprendizado profundo tornará sua vida melhor e seu emprego mais agradável se você tiver habilidades que lhe permitam interagir com sucesso com uma IA. Este artigo descreve como a IA pode mudar o local de trabalho no futuro. Um elemento importante dessa discussão é tornar o trabalho mais convidativo.

Em um ponto da história da humanidade, o trabalho foi realmente agradável para a maioria das pessoas. Não é que eles andassem cantando e rindo o tempo todo, mas muitas pessoas estavam ansiosas para começar a cada dia. Mais tarde, durante a revolução industrial, outras pessoas colocaram a labuta no trabalho, tornando todos os dias longe do trabalho o único prazer que algumas pessoas desfrutavam. O problema tornou-se tão grave que você pode encontrar músicas populares sobre ele, como “Trabalhando para o fim de semana”. Ao remover o fardo do local de trabalho, o aprendizado profundo tem o potencial de tornar o trabalho agradável novamente.

O aprendizado profundo afetará fortemente o ambiente de trabalho de várias maneiras, e não apenas o desempenho real do trabalho. Por exemplo, tecnologias baseadas em aprendizado profundo têm o potencial de melhorar sua saúde e, portanto, sua produtividade. É uma vitória para todos, porque você desfruta a vida e trabalha mais, enquanto seu chefe aproveita mais esse potencial oculto de seus esforços.

Uma das coisas que você não vê mencionado com frequência é o efeito sobre a produtividade de uma queda na taxa de natalidade nos países desenvolvidos. Este artigo da McKinsey aborda essa questão em certa medida e fornece um gráfico mostrando o impacto potencial do aprendizado profundo em vários setores. Se a tendência atual continuar, ter menos trabalhadores disponíveis significará a necessidade de aumento no local de trabalho.

No entanto, você pode se perguntar sobre o seu futuro se tiver medo de não conseguir se adaptar à nova realidade. O problema é que você talvez não saiba realmente se está seguro. Em Artificial Intelligence For Dummies, de John Paul Mueller e Luca Massaron [Wiley], você vê discussões sobre ocupações seguras para IA e novas ocupações que a AI criará. Você pode até descobrir como pode acabar trabalhando no espaço em algum momento. Infelizmente, nem todo mundo quer fazer esse tipo de jogada, assim como os luditas não fizeram durante a revolução industrial. Certamente, o que a AI promete terá consequências ainda maiores do que a revolução industrial (leia sobre os efeitos da revolução industrial) e será ainda mais perturbador. Alguns políticos, como Andrew Wang, já estão analisando soluções de curto prazo, como a renda universal básica. Essas políticas, se adotadas, ajudariam a reduzir o impacto da IA, mas não fornecerão uma solução a longo prazo. Em algum momento, a sociedade se tornará significativamente diferente do que é hoje como resultado da IA ​​- da mesma forma que a revolução industrial já mudou a sociedade.

O aprendizado profundo pode ajudar a pesquisar informações obscuras ou detalhadas

Os computadores podem fazer uma coisa - a correspondência de padrões - excepcionalmente bem (e muito melhor do que os humanos. Se você já teve a sensação de estar flutuando em informações e nada disso se relaciona à sua necessidade atual, não está sozinho). a sobrecarga é um problema há muitos anos e piora a cada ano. Você pode encontrar muitos conselhos sobre como lidar com a sobrecarga de informações. O problema é que você ainda está se afogando em informações. O aprendizado profundo permite encontrar a agulha no palheiro, e em um período de tempo razoável.Em vez de meses, uma boa solução de aprendizado profundo pode encontrar as informações necessárias em questão de horas na maioria dos casos.

No entanto, saber que a informação existe geralmente não é suficiente. Você precisa de informações detalhadas o suficiente para responder totalmente à sua pergunta, o que geralmente significa localizar mais de uma fonte e consolidar as informações. Novamente, uma solução de aprendizado profundo pode encontrar padrões e combinar os dados para você, para que você não precise combinar a entrada de várias fontes manualmente.

Depois que a AI encontra os dados e combina as várias fontes em um único relatório coeso (você espera), ele fez tudo o que pode por você. Ainda cabe ao ser humano entender as informações e determinar uma maneira de usá-las com sucesso. O computador não remove a parte criativa da tarefa; elimina o trabalho árduo de encontrar os recursos necessários para executar a parte criativa da tarefa. À medida que as informações continuam aumentando, espere ver um aumento no número de pessoas especializadas em localizar informações detalhadas ou obscuras.

O corretor de informações está se tornando uma parte essencial da sociedade e representa uma interessante carreira que muitas pessoas nem ouviram falar. Este artigo oferece um bom resumo do que os intermediários de informações fazem.

O aprendizado profundo pode ajudar a projetar edifícios

A maioria das pessoas vê a arquitetura como um negócio criativo. Imagine projetar o próximo Empire State Building ou algum outro edifício que resistirá ao teste do tempo. No passado, a concepção de um edifício levou anos. Curiosamente, o empreiteiro realmente construiu o Empire State Building em pouco mais de um ano, mas esse geralmente não é o caso. O aprendizado profundo e a tecnologia de computador podem ajudar a reduzir o tempo para projetar e construir edifícios consideravelmente, permitindo coisas como orientações virtuais. De fato, o uso da aprendizagem profunda está melhorando a vida dos arquitetos de maneiras significativas.

No entanto, transformar um design em um tour virtual não é a façanha mais impressionante de aprendizado profundo nesse campo. O uso do aprendizado profundo permite que os designers localizem possíveis problemas de engenharia, realizem testes de estresse e garantam segurança de outras maneiras antes que o projeto saia da prancheta. Esses recursos minimizam o número de problemas que ocorrem após a construção de um edifício, e o arquiteto pode apreciar os louros de um sucesso, em vez do desprezo e da tragédia potencial de uma falha.

O aprendizado profundo pode aumentar a segurança

Acidentes acontecem! No entanto, o aprendizado profundo pode ajudar a impedir a ocorrência de acidentes - pelo menos na maior parte. Ao analisar padrões complexos em tempo real, o aprendizado profundo pode ajudar as pessoas envolvidas em vários aspectos da garantia de segurança. Por exemplo, rastreando vários padrões de tráfego e prevendo o potencial de um acidente com bastante antecedência, uma solução de aprendizado profundo poderia fornecer aos especialistas em segurança sugestões para impedir que o acidente acontecesse. Um humano não pôde realizar a análise devido a muitas variáveis. No entanto, uma solução de aprendizado profundo pode executar a análise e, em seguida, fornecer saída a um ser humano para possível implementação.

Como em qualquer outra ocupação que envolva aprendizado profundo, o ser humano atua como parte compreensiva da solução. Vários tipos de acidentes desafiam a capacidade de qualquer solução de aprendizado profundo fornecer sempre soluções precisas. Os humanos não são previsíveis, mas outros podem reduzir as chances de algo terrível acontecer, com as informações corretas. A solução de aprendizado profundo fornece essas informações corretas, mas requer visão e intuição humanas para interpretar as informações corretamente.

  1. O JavaScript é necessário para o funcionamento completo desta página.

Por John Paul Mueller, Luca Mueller

Este artigo é muito curto. Nem pode começar a descrever as maneiras pelas quais o aprendizado profundo o afetará no futuro. Considere que este artigo oferece um petisco tentador - um aperitivo que pode estimular seu apetite por explorar ainda mais o mundo do aprendizado profundo.

Esses aplicativos de aprendizado profundo já são comuns em alguns casos. Você provavelmente já usou pelo menos um deles hoje e provavelmente mais do que apenas um. Embora a tecnologia tenha começado a ser amplamente difundida, é realmente apenas o começo. Estamos no começo de algo e a IA é realmente imatura neste momento.

restaure cores para fotos com aplicativos de aprendizado profundo

Este artigo não discute robôs assassinos, futuros distópicos, inteligência artificial ou qualquer cenário sensacional que você possa ver nos filmes. As informações que você encontra aqui são sobre a vida real, aplicativos de IA existentes com os quais você pode interagir hoje.

O aprendizado profundo pode ser usado para restaurar cores em vídeos e fotos em preto e branco

Você provavelmente tem alguns vídeos ou fotos em preto e branco de familiares ou eventos especiais que adoraria ver em cores. A cor consiste em três elementos: matiz (a cor real), valor (escuridão ou claridade da cor) e saturação (a intensidade da cor). Curiosamente, muitos artistas são daltônicos e fazem forte uso do valor da cor em suas criações. Portanto, ter falta de matiz (o elemento que falta em arte em preto e branco) não é o fim do mundo. Muito pelo contrário, alguns artistas vêem isso como uma vantagem.

Ao visualizar algo em preto e branco, você vê valor e saturação, mas não matiz. A colorização é o processo de adição do matiz. Os artistas geralmente executam esse processo usando uma seleção minuciosa de cores individuais. No entanto, a IA automatizou esse processo usando as Redes Neurais Convolucionais (CNNs).

A maneira mais fácil de usar a CNN para colorir é encontrar uma biblioteca para ajudá-lo. O site Algorithmia oferece essa biblioteca e mostra algum código de exemplo. Você também pode experimentar o aplicativo colando um URL no campo fornecido. Este artigo Petapixel.com descreve quão bem esse aplicativo funciona. É absolutamente incrível!

O aprendizado profundo pode aproximar poses de pessoas em tempo real

As poses de pessoa não informam quem está em um fluxo de vídeo, mas quais elementos de uma pessoa estão no fluxo de vídeo. Por exemplo, usar uma pose de pessoa pode dizer se o cotovelo da pessoa aparece no vídeo e onde ele aparece. Este artigo informa mais sobre como essa técnica de visualização inteira funciona. De fato, você pode ver como o sistema funciona através de uma curta animação de uma pessoa no primeiro caso e três pessoas no segundo caso.

Poses de pessoas podem ter todos os tipos de propósitos úteis. Por exemplo, você pode usar uma pose de pessoa para ajudar as pessoas a melhorar sua forma para vários tipos de esportes - tudo, desde golfe a boliche. Uma pose de pessoa também pode possibilitar novos tipos de videogames. Imagine ser capaz de rastrear a posição de uma pessoa em um jogo sem a variedade usual de equipamentos pesados. Teoricamente, você pode usar poses pessoais para realizar análises da cena do crime ou para determinar a possibilidade de uma pessoa cometer um crime.

Outra aplicação interessante da detecção de pose é para fins médicos e de reabilitação. O software desenvolvido por aprendizado profundo pode informar se você está fazendo seus exercícios corretamente e acompanhar suas melhorias. Uma aplicação desse tipo poderia apoiar o trabalho de um reabilitador profissional, cuidando de você quando você não estiver em um centro médico (uma atividade chamada telereabilitação).

Felizmente, você pode pelo menos começar a trabalhar com poses pessoais hoje usando a biblioteca tfjs-models (PoseNet). Você pode vê-lo em ação com uma webcam, completa com o código fonte. O exemplo demora um pouco para carregar, então você precisa ser paciente.

O aprendizado profundo pode realizar análises de comportamento em tempo real

A análise do comportamento vai um passo além do que a pessoa coloca a análise. Quando você realiza uma análise do comportamento, a questão ainda não é quem, mas como. Esse aplicativo de IA em particular afeta a maneira como os fornecedores projetam produtos e sites. Artigos como este da Amplitude fazem grandes esforços para definir e caracterizar completamente o uso da análise de comportamento. Na maioria dos casos, a análise de comportamento ajuda a ver como o processo que o designer do produto esperava que você seguisse não corresponde ao processo que você realmente usa.

A análise do comportamento também tem um papel a desempenhar em outras áreas da vida. Por exemplo, a análise do comportamento pode ajudar as pessoas na profissão médica a identificar possíveis problemas com pessoas que têm condições médicas específicas, como autismo, e ajudar o paciente a superar esses problemas. A análise do comportamento também pode ajudar os professores de artes físicas a mostrar aos alunos como aprimorar suas habilidades. Você também pode vê-lo usado na profissão legal para ajudar a determinar os motivos. (A culpa é óbvia, mas o motivo pelo qual uma pessoa faz algo é essencial para remediar adequadamente um comportamento indesejado.)

Felizmente, você já pode iniciar a análise de comportamento com o Python.

O aprendizado profundo pode ser usado para traduzir idiomas

A Internet criou um ambiente que pode impedir que você saiba com quem realmente está falando, onde está essa pessoa ou, às vezes, até quando está falando com você. Uma coisa não mudou, no entanto: a necessidade de traduzir um idioma para outro quando as duas partes não falam um idioma comum. Em alguns casos, a tradução incorreta pode ser bem-humorada, supondo que ambas as partes tenham senso de humor.

No entanto, a má tradução também levou a todo tipo de consequências sérias, incluindo a guerra. Consequentemente, mesmo que o software de tradução seja extremamente acessível na Internet, a seleção cuidadosa de qual produto usar é importante. Um dos aplicativos mais populares é o Google Translate, mas muitos outros aplicativos estão disponíveis, como o DeepL. Segundo a Forbes, a tradução automática é uma área em que a IA se destaca.

Os aplicativos de tradução geralmente confiam nas Redes Neurais Recorrentes Bidirecionais (BRNNs). Você não precisa criar seu próprio BRNN, porque você tem muitas APIs existentes para escolher. Por exemplo, você pode obter acesso Python à API do Google Tradutor usando a biblioteca. O ponto é que a tradução é possivelmente um dos aplicativos mais populares de aprendizado profundo e que muitas pessoas usam sem sequer pensar nisso.

O aprendizado profundo pode ser usado para estimar o potencial de economia solar

Tentar determinar se a energia solar realmente funcionará em seu local é difícil, a menos que muitas outras pessoas também a usem. Além disso, é ainda mais difícil saber qual o nível de economia que você pode aproveitar. Obviamente, você não deseja instalar energia solar se ela não atender às suas metas de uso, o que pode não incluir realmente uma economia de custos a longo prazo (embora geralmente seja). Agora, alguns projetos de aprendizado de reforço profundo ajudam você a adivinhar a energia solar, incluindo o Projeto Sunroof. Felizmente, você também pode obter suporte para esse tipo de previsão em seu aplicativo Python.

AI pode derrotar pessoas em jogos de computador

A competição de IA versus pessoas continua a atrair interesse. De ganhar no xadrez a vencer no Go, a IA parece ter se tornado imbatível - pelo menos, imbatível em um jogo. Ao contrário dos humanos, a IA é especializada, e é improvável que uma IA que possa vencer no Go se dê bem no xadrez. Mesmo assim, 2017 é frequentemente aclamado como o começo do fim para os seres humanos em relação à IA nos jogos. É claro que a competição já está em andamento há algum tempo. E é provável que você encontre competições que a IA venceu muito antes de 2017. De fato, algumas fontes colocam a data da vitória do Go em outubro de 2015. O artigo em Engenharia Interessante descreve outras 11 vezes que a IA venceu.

O problema é criar uma IA personalizada que possa vencer um jogo específico e perceber que, ao se especializar nesse jogo, a AI pode não se sair bem em outros jogos. O processo de construção de uma IA para apenas um jogo pode parecer difícil. Este artigo descreve como criar uma IA de xadrez simples, que na verdade não derrota um mestre de xadrez, mas pode se dar bem com um jogador intermediário.

No entanto, é um pouco cedo para dizer que as pessoas estão fora do jogo. No futuro, as pessoas poderão competir contra a IA com mais de um jogo. Exemplos desse tipo de competição já são abundantes, como pessoas que realizam triatlo de jogos, que consiste em três eventos esportivos, em vez de um. A competição se tornaria uma flexibilidade: a IA não poderia simplesmente se curvar e aprender apenas um jogo, para que o humano tivesse uma vantagem na flexibilidade. Esse tipo de uso de IA demonstra que humanos e IA podem ter que cooperar no futuro, com a IA especializada em tarefas específicas e a humana fornecendo a flexibilidade necessária para executar todas as tarefas necessárias.

O aprendizado profundo pode ser usado para gerar vozes

Seu carro já pode falar com você; muitos carros falam regularmente com as pessoas agora. Estranhamente, a geração de voz geralmente é tão boa que é difícil distinguir a voz gerada de uma real. Alguns artigos falam sobre como a experiência de encontrar vozes de computador que parecem bastante reais está se tornando mais comum. O problema atrai atenção suficiente agora que muitos call centers informam que você está falando com um computador e não com uma pessoa.

Embora a saída de chamada dependa de respostas com script, possibilitando gerar respostas com um nível extremamente alto de confiança, o reconhecimento de voz é um pouco mais difícil de executar (mas melhorou bastante). Para trabalhar com o reconhecimento de voz com sucesso, muitas vezes você precisa limitar sua entrada a termos-chave específicos. Ao usar palavras-chave que o reconhecimento de voz foi projetado para entender, você evita a necessidade de um usuário repetir uma solicitação. Essa necessidade de termos específicos revela que você está falando com um computador - basta pedir algo inesperado e o computador não saberá o que fazer com ele.

A maneira mais fácil de implementar seu próprio sistema de voz é confiar em uma API existente, como o Cloud Speech to Text. Obviamente, você pode precisar de algo que possa personalizar. Nesse caso, o uso de uma API será útil. Este artigo explica como criar seu próprio aplicativo baseado em voz usando o Python.

O aprendizado profundo pode ser usado para prever dados demográficos

A demografia, aquelas estatísticas vitais ou sociais que agrupam as pessoas por certas características, sempre fizeram parte da arte e da ciência. Você pode encontrar vários artigos sobre como fazer com que seu computador gere informações demográficas para clientes (ou clientes em potencial). O uso de informações demográficas é amplo, mas você as vê usadas para prever quais produtos um determinado grupo comprará (em comparação com o da concorrência). A demografia é um meio importante de categorizar as pessoas e, em seguida, prever alguma ação da parte delas com base nas associações de grupos. Aqui estão os métodos que você costuma ver citados para IAs ao coletar dados demográficos:

  • Histórico: com base em ações anteriores, um AI generaliza quais ações você pode executar no futuro. Atividade atual: com base na ação que você executa agora e talvez em outras características, como sexo, um computador prevê sua próxima ação. Características: Com base nas propriedades que o definem, como sexo, idade e área em que você mora, um computador prevê as escolhas que você provavelmente fará.

Você pode encontrar artigos sobre os recursos preditivos da IA ​​que parecem bons demais para ser verdade. Por exemplo, este artigo do Medium diz que a IA agora pode prever seus dados demográficos com base apenas em seu nome. A empresa nesse artigo, Demografy, alega fornecer sexo, idade e afinidade cultural com base apenas no nome. Embora o site afirme ser 100% exato, essa estatística é altamente improvável, porque alguns nomes são ambíguos quanto ao gênero, como Renee, e outros são atribuídos a um gênero em alguns países e outro em outros. Sim, a previsão demográfica pode funcionar, mas tome cuidado antes de acreditar em tudo o que esses sites dizem.

Se você quiser experimentar a previsão demográfica, poderá encontrar várias APIs online. Por exemplo, a API DeepAI promete ajudá-lo a prever idade, sexo e formação cultural com base na aparência de uma pessoa em um vídeo. Cada uma das APIs on-line é especializada, portanto, é necessário escolher a API de acordo com o tipo de dados de entrada que você pode fornecer.

A IA pode criar arte a partir de imagens do mundo real

O aprendizado profundo pode usar o conteúdo de uma imagem do mundo real e um mestre existente de estilo para criar uma combinação dos dois. De fato, algumas obras de arte geradas usando essa abordagem estão comandando preços altos no bloco de leilão. Você pode encontrar todos os tipos de artigos sobre esse tipo específico de geração de arte, como este artigo da Wired.

No entanto, mesmo que as fotos sejam boas para pendurar na parede, você pode querer produzir outros tipos de arte. Por exemplo, você pode criar uma versão 3D da sua imagem usando produtos como o Smoothie 3-D. Não é o mesmo que criar uma escultura; em vez disso, você usa uma impressora 3D para criar uma versão 3D da sua foto. Confira um experimento que você pode executar para ver como o processo funciona.

A saída de uma IA também não precisa consistir em algo visual. Por exemplo, o aprendizado profundo permite criar música com base no conteúdo de uma imagem. Essa forma de arte torna o método usado pela IA mais claro. A IA transforma o conteúdo que não entende de um formulário para outro. Como seres humanos, vemos e entendemos a transformação, mas tudo que o computador vê são números a serem processados ​​usando algoritmos inteligentes criados por outros seres humanos.

O aprendizado profundo pode ser usado para prever catástrofes naturais

As pessoas tentam prever desastres naturais desde que haja pessoas e desastres naturais. Ninguém quer fazer parte de um terremoto, tornado, erupção vulcânica ou qualquer outro desastre natural. Ser capaz de fugir rapidamente é a principal consideração neste caso, uma vez que os seres humanos ainda não conseguem controlar seu ambiente o suficiente para impedir qualquer desastre natural.

O aprendizado profundo fornece os meios para procurar padrões extremamente sutis que confundem as mentes dos seres humanos. Esses padrões podem ajudar a prever uma catástrofe natural, de acordo com o artigo na solução do Google. O fato de o software prever qualquer desastre é simplesmente incrível. No entanto, este artigo adverte que confiar exclusivamente nesse software seria um erro.

O excesso de confiança na tecnologia é um tema constante; portanto, não se surpreenda que o aprendizado profundo seja menos que perfeito na previsão de catástrofes naturais também.

  1. Os dados foram analisados ​​por meio de entrevistas semiestruturadas.

Por John Paul Mueller, Luca Mueller

As redes neurais fornecem uma transformação da sua entrada na saída desejada. Mesmo no aprendizado profundo, o processo é o mesmo, embora a transformação seja mais complexa. Em contraste com uma rede neural mais simples composta de poucas camadas, o aprendizado profundo depende de mais camadas para realizar transformações complexas. A saída de uma fonte de dados se conecta à camada de entrada da rede neural e a camada de entrada começa a processar os dados. As camadas ocultas mapeiam os padrões e os relacionam a uma saída específica, que pode ser um valor ou uma probabilidade. Esse processo funciona perfeitamente para qualquer tipo de entrada e funciona especialmente bem para imagens.

Depois que cada camada processa seus dados, ela gera os dados transformados para a próxima camada. Essa próxima camada processa os dados com total independência das camadas anteriores. O uso dessa estratégia implica que, se você estiver alimentando um vídeo em sua rede neural, a rede processará cada imagem individualmente, uma após a outra, e o resultado não será alterado, mesmo que você altere a ordem das imagens fornecidas. . Ao executar uma rede dessa maneira, você não obtém nenhuma vantagem da ordem do processamento de informações.

No entanto, a experiência também ensina que, para entender um processo, às vezes é necessário observar os eventos em sequência. Ao usar a experiência adquirida em uma etapa anterior para explorar uma nova etapa, você pode reduzir a curva de aprendizado e diminuir o tempo e o esforço necessários para entender cada etapa.

Redes neurais recorrentes: modelando sequências usando memória

Algumas arquiteturas neurais não permitem processar uma sequência de elementos simultaneamente usando uma única entrada. Por exemplo, quando você tem uma série de vendas mensais de produtos, acomoda os números de vendas usando doze entradas, uma para cada mês, e permite que a rede neural os analise de uma só vez. Daqui resulta que, quando você tem seqüências mais longas, precisa acomodá-las usando um número maior de entradas, e sua rede se torna bastante grande porque cada entrada deve se conectar a todas as outras entradas. Você acaba tendo uma rede caracterizada por um grande número de conexões (que se traduz em muitos pesos) também.

Redes Neurais Recorrentes (RNNs) são uma alternativa ao perceptron e CNNs. Eles apareceram pela primeira vez na década de 1980 e vários pesquisadores trabalharam para melhorá-los até ganharem popularidade recentemente, graças aos desenvolvimentos no aprendizado profundo e no poder computacional.

A idéia por trás das RNNs é simples: eles examinam cada elemento da sequência uma vez e retêm a memória para poder reutilizá-lo ao examinar o próximo elemento da sequência. É semelhante a como a mente humana funciona ao ler texto: uma pessoa lê o texto letra por letra, mas entende as palavras lembrando cada letra da palavra. De maneira semelhante, uma RNN pode associar uma palavra a um resultado lembrando a sequência de letras que recebe. Uma extensão dessa técnica possibilita que uma RNN determine se uma frase é positiva ou negativa - uma análise amplamente usada chamada análise de sentimentos. A rede conecta uma resposta positiva ou negativa a certas sequências de palavras que ele viu em exemplos de treinamento.

Você representa um RNN graficamente como uma unidade neural (também conhecida como célula) que conecta uma entrada a uma saída, mas também se conecta a si mesma. Essa auto-conexão representa o conceito de recursão, que é uma função aplicada a si mesma até atingir uma saída específica. Um dos exemplos de recursão mais usados ​​é o cálculo de um fatorial. A imagem abaixo mostra um exemplo específico da RNN usando uma sequência de letras para criar a palavra jazz. O lado direito da imagem abaixo mostra uma representação do comportamento da unidade RNN recebendo jazz como entrada, mas na verdade existe apenas uma unidade, como mostrado à esquerda.

aprendizagem profunda e redes neurais recorrentes

Esta imagem mostra uma célula recursiva à esquerda e a expande como uma série de unidades desdobradas que recebe as letras únicas da palavra jazz à direita. Começa com j, seguido pelas outras letras. Quando esse processo ocorre, o RNN emite uma saída e modifica seus parâmetros internos. Modificando seus parâmetros internos, a unidade aprende com os dados que recebe e com a memória dos dados anteriores. A soma desse aprendizado é o estado da célula RNN.

Ao discutir redes neurais, você ouvirá muita discussão sobre pesos. Com as RNNs, você também precisa conhecer o termo estado. Os pesos ajudam a processar a entrada em uma saída em uma RNN, mas o estado contém os rastreamentos das informações que a RNN viu até agora; portanto, o estado afeta o funcionamento da RNN. O estado é um tipo de memória de curto prazo que é redefinida após a conclusão de uma sequência. Como uma célula RNN obtém partes de uma sequência, ele faz o seguinte:

  1. Processa-os, alterando o estado com cada entrada. Emite uma saída. Depois de ver a última saída, o RNN aprende os melhores pesos para mapear a entrada na saída correta usando a retropropagação.

Redes neurais recorrentes: reconhecimento e tradução da fala

A capacidade de reconhecer e traduzir entre idiomas se torna mais importante a cada dia, à medida que as economias de todos os lugares se tornam cada vez mais globalizadas. A tradução de idiomas é uma área em que a IA tem uma vantagem definitiva sobre os seres humanos - tanto que os artigos da Digitalist Magazine e da Forbes estão começando a questionar quanto tempo o tradutor humano permanecerá viável.

Obviamente, você deve tornar o processo de tradução viável usando o aprendizado profundo. Da perspectiva da arquitetura neural, você tem algumas opções:

  • Mantenha todas as saídas fornecidas pela célula RNN Mantenha a última saída da célula RNN

A última saída é a saída de toda a RNN, porque é produzida após a conclusão do exame de sequência. No entanto, você pode usar as saídas anteriores se precisar prever outra sequência ou pretender empilhar mais células RNN após a atual, como ao trabalhar com redes neurais convolucionais (CNNs). A colocação de RNNs verticalmente permite que a rede aprenda padrões de sequência complexos e se torne mais eficaz na produção de previsões.

Você também pode empilhar RNNs horizontalmente na mesma camada. Permitir que várias RNNs aprendam com uma sequência pode ajudar a obter mais com os dados. O uso de várias RNNs é semelhante às CNNs, nas quais cada camada usa profundidades de convoluções para aprender detalhes e padrões da imagem. No caso de várias RNNs, uma camada pode compreender diferentes nuances da sequência que está examinando.

Projetar grades de RNNs, horizontal e verticalmente, melhora os desempenhos preditivos. No entanto, decidir como usar a saída determina o que uma arquitetura de aprendizado profundo desenvolvida por RNNs pode alcançar. A chave é o número de elementos usados ​​como entradas e o comprimento da sequência esperado como saída. Como a rede de aprendizado profundo sincroniza as saídas da RNN, você obtém o resultado desejado.

Você tem algumas possibilidades ao usar várias RNNs, conforme ilustrado na imagem abaixo:

  • Um para um: quando você tem uma entrada e espera uma saída. Eles pegam um caso, composto de um certo número de variáveis ​​informativas, e fornecem uma estimativa, como um número ou probabilidade. Um para muitos: aqui você tem uma entrada e espera uma sequência de saídas como resultado. As redes neurais de legenda automática usam esta abordagem: Você insere uma única imagem e produz uma frase que descreve o conteúdo da imagem. Muitos para um: o exemplo clássico para RNNs. Por exemplo, você insere uma sequência textual e espera um único resultado como saída. Você vê essa abordagem usada para produzir uma estimativa de análise de sentimentos ou outra classificação do texto. Muitos para muitos: você fornece uma sequência como entrada e espera uma sequência resultante como saída. Essa é a arquitetura principal de muitos dos mais impressionantes aplicativos de IA com aprendizado profundo. Essa abordagem é usada para tradução automática (como uma rede que pode traduzir automaticamente uma frase do inglês para o alemão), chatbots (uma rede neural que pode responder suas perguntas e argumentar com você) e rotular a sequência (classificando cada uma das imagens em um vídeo).
entrada e saída de rede neural recorrente

A tradução automática é a capacidade de uma máquina de traduzir, correta e significativamente, uma língua humana para outra. Essa capacidade é algo que os cientistas se esforçam para alcançar há muito tempo, especialmente para fins militares. Você pode ler a fascinante história de todas as tentativas de realizar tradução automática por cientistas dos EUA e da Rússia no artigo de Vasily Zubarev. A verdadeira inovação aconteceu somente depois que o Google lançou a Google Neural Machine Translation (GNMT), sobre a qual você pode ler mais no blog do Google AI. O GNMT depende de uma série de RNNs (usando o paradigma muitos para muitos) para ler a sequência de palavras no idioma do qual você deseja traduzir (chamada camada de codificador) e retornar os resultados para outra camada RNN (a camada de decodificador) que transforma em saída traduzida.

A tradução automática neural precisa de duas camadas, porque a gramática e a sintaxe de um idioma podem ser diferentes de outro. Uma única RNN não consegue entender dois sistemas de idiomas ao mesmo tempo, portanto, o casal codificador-decodificador é necessário para lidar com os dois idiomas. O sistema não é perfeito, mas é um salto incrível em relação às soluções anteriores descritas no artigo de Vasily Zubarev, reduzindo muito os erros na ordem das palavras, erros lexicais (a palavra de tradução escolhida) e gramática (como as palavras são usadas).

Além disso, o desempenho depende do conjunto de treinamento, das diferenças entre os idiomas envolvidos e de suas características específicas. Por exemplo, devido à forma como a estrutura das frases é construída em japonês, o governo japonês agora está investindo em um tradutor de voz em tempo real para ajudar durante os Jogos Olímpicos de Tóquio em 2020 e impulsionar o turismo desenvolvendo uma solução avançada de rede neural.

RNNs são a razão pela qual seu assistente de voz pode responder ou seu tradutor automático pode fornecer uma tradução para o idioma estrangeiro. Como uma RNN é simplesmente uma operação recorrente de multiplicação e somatória, as redes de aprendizado profundo não conseguem realmente entender nenhum significado; eles simplesmente processam palavras e frases com base no que aprenderam durante o treinamento.

Redes neurais recorrentes: Colocar a legenda correta nas imagens

Outra aplicação possível de RNNs usando a abordagem muitos para muitos é a geração de legendas, que envolve fornecer uma imagem a uma rede neural e receber uma descrição em texto que explica o que está acontecendo na imagem. Ao contrário dos chatbots e tradutores de máquinas, cuja produção é consumida por humanos, a geração de legendas trabalha com robótica. Faz mais do que simplesmente gerar descrições de imagem ou vídeo.

A geração de legendas pode ajudar as pessoas com visão prejudicada a perceber seu ambiente usando dispositivos como o Horus wearable ou a construir uma ponte entre imagens e bases de conhecimento (baseadas em texto) para robôs - permitindo que eles entendam melhor o ambiente. Você inicia a partir de conjuntos de dados especialmente criados, como o Pascal Sentença Dataset; o Flickr 30K, que consiste em imagens do Flickr anotadas pelo crowdsourcing; ou o conjunto de dados do MS Coco. Em todos esses conjuntos de dados, cada imagem inclui uma ou mais frases que explicam o conteúdo da imagem. Por exemplo, no número de amostra 5947 do conjunto de dados do MS Coco, você vê quatro aviões que poderiam ser legendados corretamente como:

  • Quatro aviões no céu em um dia nublado Quatro aviões monomotores no ar em um dia nublado Um grupo de quatro aviões voando em formação Um grupo de aviões voando pelo céu Uma frota de aviões voando pelo céu

Uma rede neural bem treinada deve ser capaz de produzir frases análogas, se apresentadas com uma foto semelhante. O Google publicou pela primeira vez um documento sobre a solução para esse problema, chamado Rede Show and Tell ou Neural Image Caption (NIC), em 2014, e atualizou-o um ano depois.

Desde então, o Google abriu a NIC de código aberto e a ofereceu como parte da estrutura do TensorFlow. Como uma rede neural, consiste em uma CNN pré-treinada (como o Google LeNet, o vencedor do concurso ImageNet de 2014) que processa imagens de maneira semelhante para transferir o aprendizado.

Uma imagem é transformada em uma sequência de valores que representam os recursos de imagem de alto nível detectados pela CNN. Durante o treinamento, a imagem incorporada passa para uma camada de RNNs que memorizam as características da imagem em seu estado interno. A CNN compara os resultados produzidos pelas RNNs com todas as descrições possíveis fornecidas para a imagem de treinamento e um erro é calculado. O erro se retropropõe à parte da rede da RNN para ajustar os pesos da RNN e ajudá-lo a aprender a legendar as imagens corretamente. Depois de repetir esse processo várias vezes usando imagens diferentes, a rede está pronta para ver novas imagens e fornecer sua descrição dessas novas imagens.

As redes neurais recorrentes oferecem oportunidades para inovações mais avançadas e podem ajudar a automatizar algumas tarefas necessárias.

  1. A programação do evento é gratuita e aberta a todos os interessados.

Por John Paul Mueller, Luca Mueller

Como simplificação, você pode visualizar o idioma como uma sequência de palavras compostas por letras (assim como sinais de pontuação, símbolos, emoticons etc.). O aprendizado profundo processa melhor a linguagem usando camadas de RNNs, como LSTM ou GRU. No entanto, saber usar RNNs não explica como usar sequências como entradas; você precisa determinar o tipo de sequência. De fato, as redes de aprendizado profundo aceitam apenas valores de entrada numéricos. Os computadores codificam seqüências de letras que você entende em números de acordo com um protocolo, como Unicode Transformation Format-8 bits (UTF-8). UTF-8 é a codificação mais usada.

O aprendizado profundo também pode processar dados textuais usando Redes Neurais Convolucionais (CNNs) em vez de RNNs, representando sequências como matrizes (semelhantes ao processamento de imagens). O Keras suporta camadas CNN, como o Conv1D, que pode operar com recursos ordenados no tempo - ou seja, sequências de palavras ou outros sinais. A saída de convolução 1D é geralmente seguida por uma camada MaxPooling1D que resume as saídas. As CNNs aplicadas às sequências encontram um limite em sua insensibilidade à ordem global da sequência. (Eles tendem a detectar padrões locais.) Por esse motivo, eles são mais usados ​​no processamento de sequências em combinação com RNNs, não como substitutos.

O Processamento de linguagem natural (PNL) consiste em uma série de procedimentos que aprimoram o processamento de palavras e frases para análise estatística, algoritmos de aprendizado de máquina e aprendizado profundo. A PNL deve suas raízes à lingüística computacional que alimentou sistemas baseados em regras de IA, como sistemas especialistas, que tomaram decisões com base em uma tradução por computador do conhecimento humano, experiência e modo de pensar. A PNL digitou informações textuais, que não são estruturadas, em dados mais estruturados, para que sistemas especialistas pudessem manipulá-las e avaliá-las facilmente.

Atualmente, o aprendizado profundo tomou conta do jogo e os sistemas especialistas estão limitados a aplicações específicas nas quais a interpretabilidade e o controle dos processos de decisão são fundamentais (por exemplo, em aplicações médicas e sistemas de decisão do comportamento de direção em alguns carros autônomos). No entanto, o pipeline de PNL ainda é bastante relevante para muitas aplicações de aprendizado profundo.

Processamento de linguagem natural: definindo entendimento como tokenização

Em um pipeline de PNL, o primeiro passo é obter o texto bruto. Geralmente, você o armazena na memória ou acessa a partir do disco. Quando os dados são grandes demais para caber na memória, você mantém um ponteiro no disco (como o nome do diretório e o nome do arquivo). No exemplo a seguir, você usa três documentos (representados por variáveis ​​de sequência) armazenados em uma lista (o contêiner de documento é o corpus in nat

importar numpy como np
textos = ["Meu cachorro se dá bem com gatos",
"Aquele gato é cruel",
"Meu cachorro fica feliz quando é almoço"]

Depois de obter o texto, você o processa. Ao processar cada frase, você extrai os recursos relevantes do texto (geralmente cria uma matriz de palavras) e passa tudo para um modelo de aprendizado, como um algoritmo de aprendizado profundo. Durante o processamento de texto, você pode usar diferentes transformações para manipular o texto (com a tokenização sendo a única transformação obrigatória):

  • Normalização: remova letras maiúsculas. Limpeza: remova elementos não textuais, como pontuação e números. Tokenização: divida uma frase em palavras individuais. Interromper a remoção de palavras: remova palavras comuns e pouco informativas que não adicionam significado à frase, como os artigos a e a. Remover negações como não pode ser prejudicial se você quiser adivinhar o sentimento. Stemming: reduza uma palavra ao seu radical (que é a forma da palavra antes de adicionar afixos flexionados). Um algoritmo, chamado stemmer, pode fazer isso com base em uma série de regras. Lematização: Transforme uma palavra em sua forma de dicionário (o lema). É uma alternativa ao stemming, mas é mais complexo porque você não usa um algoritmo. Em vez disso, você usa um dicionário para converter todas as palavras em seu lema. Pos-tagging: marque cada palavra de uma frase com seu papel gramatical na frase (como marcar uma palavra como um verbo ou como um substantivo). Gramas N: associe cada palavra a um determinado número (o n em n-grama) das seguintes palavras e trate-as como um conjunto único. Geralmente, bi-gramas (uma série de dois elementos ou tokens adjacentes) e tri-gramas (uma série de três elementos ou tokens adjacentes) funcionam melhor para fins de análise.

Para conseguir essas transformações, você pode precisar de um pacote Python especializado, como NLTK ou Scikit-learn. Ao trabalhar com aprendizado profundo e com um grande número de exemplos, você precisa apenas de transformações básicas: normalização, limpeza e tokenização. As camadas de aprendizado profundo podem determinar quais informações extrair e processar. Ao trabalhar com poucos exemplos, você precisa fornecer o máximo de processamento da PNL possível para ajudar a rede de aprendizado profundo a determinar o que fazer, apesar da pouca orientação fornecida pelos poucos exemplos.

O Keras oferece uma função, keras.preprocessing.text.Tokenizer, que normaliza (usando o parâmetro inferior definido como True), limpa (o parâmetro filter contém uma sequência de caracteres a serem removidos, geralmente estes: '! ”# $% & ( ) * +, -. / :; <=>? @ [\] ^ _ `{|} ~ ') e tokens.

Processamento de linguagem natural: Colocando todos os documentos em uma sacola

Após o processamento do texto, é necessário extrair os recursos relevantes, o que significa transformar o texto restante em informações numéricas para a rede neural processar. Isso geralmente é feito usando a abordagem do pacote de palavras, obtida por codificação de frequência ou codificação binária do texto. Esse processo equivale a transformar cada palavra em uma coluna da matriz com o número de palavras que você precisa representar. O exemplo a seguir mostra como alcançar esse processo e o que isso implica. Como primeira etapa, você prepara uma normalização e tokenização básicas usando alguns comandos Python para determinar o tamanho do vocabulário da palavra para processamento:

unique_words = set (word.lower () para frase em textos para
palavra na frase. divisor (""))
print (f "Existem {len (unique_words)} palavras únicas")

O código informa 14 palavras. Agora você deve carregar a função Tokenizer do Keras e configurá-la para processar o texto, fornecendo o tamanho de vocabulário esperado:

do keras.preprocessing.text import Tokenizer
vocabulary_size = len (unique_words) + 1
tokenizer = Tokenizer (num_words = tamanho do vocabulário)

O uso de um tamanho de vocabulário muito pequeno pode excluir palavras importantes do processo de aprendizado. Um que é muito grande pode inutilmente consumir memória do computador. Você precisa fornecer ao Tokenizer uma estimativa correta do número de palavras distintas contidas na lista de textos. Você também sempre adiciona 1 ao vocabulary_size para fornecer uma palavra extra para o início de uma frase (um termo que ajuda a rede de aprendizado profundo). Nesse momento, o Tokenizer mapeia as palavras presentes nos textos em índices, que são valores numéricos que representam as palavras no texto:

tokenizer.fit_on_texts (textos)
print (tokenizer.index_word)

Os índices resultantes são os seguintes:

{1: 'is', 2: 'my', 3: 'dog', 4: 'gets', 5: 'along',
6: 'com', 7: 'gatos', 8: 'isso', 9: 'gato', 10: 'vicioso',
11: 'feliz', 12: 'quando', 13: 'isso', 14: 'almoço'}

Os índices representam o número da coluna que abriga as informações da palavra:

print (tokenizer.texts_to_matrix (textos))

Aqui está a matriz resultante:

[[0. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0.]]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 0. 0.]]
[0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1.]]

A matriz consiste em 15 colunas (14 palavras mais o início do ponteiro da frase) e três linhas, representando os três textos processados. Essa é a matriz de texto a ser processada usando uma rede neural rasa (as RNNs exigem um formato diferente, conforme discutido mais adiante), sempre dimensionado como vocabulary_size pelo número de textos. Os números dentro da matriz representam o número de vezes que uma palavra aparece na frase. Essa não é a única representação possível. Aqui estão os outros:

  • Codificação de frequência: conta o número de aparências de palavras na frase. codificação one-hot ou binária: observa a presença de uma palavra em uma frase, não importa quantas vezes ela apareça. Pontuação do termo Frequência de frequência inversa de documentos (TF-IDF): codifica uma medida relativa a quantas vezes uma palavra aparece em um documento em relação ao número geral de palavras na matriz. (Palavras com pontuações mais altas são mais distintas; palavras com pontuações mais baixas são menos informativas.)

Você pode usar a transformação TF-IDF da Keras diretamente. O Tokenizer oferece um método, messages_to_matrix, que por padrão codifica seu texto e o transforma em uma matriz na qual as colunas são suas palavras, as linhas são seus textos e os valores são a frequência das palavras em um texto. Se você aplicar a transformação especificando mode = 'tfidf', a transformação usará TF-IDF em vez de frequências de palavras para preencher os valores da matriz:

print (np.round (tokenizer.texts_to_matrix (textos,
mode = 'tfidf'), 1))

Observe que, ao usar uma representação de matriz, independentemente de você usar binário, frequência ou o TF-IDF mais sofisticado, você perdeu qualquer senso de ordenação de palavras que existe na frase. Durante o processamento, as palavras se espalham em diferentes colunas e a rede neural não consegue adivinhar a ordem das palavras em uma frase. Essa falta de ordem é o motivo pelo qual você chama isso de abordagem de palavras-chave.

A abordagem de palavras-chave é usada em muitos algoritmos de aprendizado de máquina, geralmente com resultados que variam de bom a razoável, e você pode aplicá-lo a uma rede neural usando camadas de arquitetura densa. As transformações de palavras codificadas em n_grams (discutidas no parágrafo anterior como uma transformação de processamento da PNL) fornecem mais algumas informações, mas, novamente, você não pode relacionar as palavras.

As RNNs acompanham as seqüências, portanto ainda usam a codificação one-hot, mas não codificam a frase inteira; em vez disso, codificam individualmente cada token (que pode ser uma palavra, um caractere ou até um monte de caracteres). Por esse motivo, eles esperam uma sequência de índices representando a frase:

print (tokenizer.texts_to_sequences (textos))

À medida que cada frase passa para uma entrada de rede neural como uma sequência de números de índice, o número é transformado em um vetor codificado de uma quente. Os vetores codificados one-hot são então alimentados nas camadas da RNN, uma de cada vez, facilitando o aprendizado. Por exemplo, aqui está a transformação da primeira frase na matriz:

[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]]

Nesta representação, você obtém uma matriz distinta para cada pedaço de texto. Cada matriz representa os textos individuais como palavras distintas usando colunas, mas agora as linhas representam a ordem de aparência das palavras. (A primeira linha é a primeira palavra, a segunda linha é a segunda palavra e assim por diante.)

Usando essa abordagem básica, os cientistas de dados podem usar o aprendizado profundo para o Processamento de Linguagem Natural.

  1. Redes e Aprendizagem Profunda: Diferenciação de Redes Neurais

Por John Paul Mueller, Luca Mueller

Depois de saber como as redes neurais funcionam basicamente, você precisa entender melhor o que as diferencia para entender seu papel na aprendizagem profunda. Além das diferentes arquiteturas de redes neurais, a escolha das funções de ativação, otimizadores e a taxa de aprendizado da rede neural podem fazer a diferença. Conhecer operações básicas não basta, porque você não obtém os resultados desejados. Olhar sob o capô de uma rede neural ajuda a entender como você pode ajustar sua solução para modelar problemas específicos. Além disso, entender os vários algoritmos usados ​​para criar uma rede neural ajudará você a obter melhores resultados com menos esforço e em menos tempo. O artigo a seguir foca em três áreas de diferenciação de redes neurais.

Escolhendo a função de ativação correta para sua rede neural

Uma função de ativação é a parte de uma rede neural que simplesmente define quando um neurônio é acionado. Considere isso como uma espécie de ponto de inflexão: a entrada de um determinado valor não fará o neurônio disparar porque não é suficiente, mas apenas um pouco mais de entrada pode causar a ativação do neurônio. Um neurônio é definido de uma maneira simples da seguinte maneira:

y = ∑ (peso * entrada) + desvio

A saída, y, pode ser qualquer valor entre + infinito e - infinito. O problema, então, é decidir qual valor de y é o valor de disparo, que é onde uma função de ativação entra em jogo na sua rede neural. A função de ativação determina qual valor é alto ou baixo o suficiente para refletir um ponto de decisão na rede neural para um neurônio ou grupo de neurônios específico.

Como em todo o resto das redes neurais, você não tem apenas uma função de ativação. Você usa a função de ativação que funciona melhor em um cenário específico. Com isso em mente, você pode dividir as funções de ativação nessas categorias:

  • Etapa: uma função de etapa (também chamada de função binária) depende de um limite específico para tomar a decisão de ativar ou não. Usar uma função step significa que você sabe qual valor específico causará uma ativação. No entanto, as funções de etapa são limitadas, pois são totalmente ativadas ou desativadas - não existem tons de cinza. Consequentemente, ao tentar determinar qual classe provavelmente está correta com base em uma determinada entrada, uma função de etapa não funcionará. Linear: Uma função linear (A = cx) fornece uma determinação linear de ativação com base na entrada. O uso de uma função linear ajuda a determinar qual saída será ativada com base na saída mais correta (conforme expressa pela ponderação). No entanto, funções lineares funcionam apenas como uma única camada. Se você empilhar várias camadas de funções lineares, a saída seria a mesma que usar uma única camada, o que anula o propósito de usar redes neurais. Conseqüentemente, uma função linear pode aparecer como uma única camada, mas nunca como várias camadas. Sigmóide: Uma função sigmóide (A = 1/1 + e-x), que produz uma curva em forma de letra C ou S, não é linear. Começa parecendo a função step, exceto que os valores entre dois pontos realmente existem em uma curva, o que significa que você pode empilhar funções sigmóides para executar a classificação com várias saídas. O alcance de uma função sigmóide está entre 0 e 1, não - infinito a + infinito, como ocorre com uma função linear; portanto, as ativações são limitadas dentro de um intervalo específico. No entanto, a função sigmóide sofre de um problema chamado gradiente de fuga, o que significa que a função se recusa a aprender após um certo ponto, porque o erro propagado diminui para zero quando se aproxima de camadas distantes. Tanh: Uma função tanh (A = (2/1 + e-2x) - 1) é na verdade uma função sigmóide em escala. Ele tem um intervalo de -1 a 1, então, novamente, é um método preciso para ativar os neurônios. A grande diferença entre funções sigmóides e funções tanh é que o gradiente da função tanh é mais forte, o que significa que detectar pequenas diferenças é mais fácil, tornando a classificação mais sensível. Como a função sigmóide, o tanh sofre com problemas de gradiente que desaparecem. ReLU: Uma função ReLU, ou Unidades Lineares Retificadas, (A (x) = max (0, x)) fornece uma saída no intervalo de 0 a infinito; portanto, é semelhante à função linear, exceto que também não é linear, permitindo que você empilhar funções ReLU. Uma vantagem do ReLU é que ele requer menos poder de processamento, porque menos neurônios disparam. A falta de atividade à medida que o neurônio se aproxima da parte 0 da linha significa que há menos saídas potenciais a serem observadas. No entanto, essa vantagem também pode se tornar uma desvantagem quando você tem um problema chamado ReLU que está morrendo. Depois de um tempo, os pesos da rede neural não fornecem mais o efeito desejado (simplesmente para de aprender) e os neurônios afetados morrem - eles não respondem a nenhuma entrada.

Além disso, a ReLU possui algumas variantes que você deve considerar:

  • ELU (Unidade Linear Exponencial): Difere da ReLU quando as entradas são negativas. Nesse caso, as saídas não chegam a zero, mas diminuem lentamente para -1 exponencialmente. PReLU (Unidade linear retificada paramétrica): difere da ReLU quando as entradas são negativas. Nesse caso, a saída é uma função linear cujos parâmetros são aprendidos usando a mesma técnica que qualquer outro parâmetro da rede. LeakyReLU: Semelhante ao PReLU, mas o parâmetro para o lado linear é fixo.

Confiando em um otimizador inteligente para sua rede neural

Um otimizador serve para garantir que sua rede neural execute modelos de maneira rápida e correta, independentemente do problema que você deseja resolver, modificando os desvios e pesos da rede neural (consulte este artigo para saber mais sobre como melhorar seus modelos de aprendizado de máquina). Acontece que um algoritmo executa essa tarefa, mas você deve escolher o algoritmo correto para obter os resultados esperados. Como em todos os cenários de rede neural, você tem vários tipos de algoritmos opcionais para escolher:

Descida do gradiente estocástico (SGD)

  • RMSProp AdaGrad AdaDelta AMSGrad Adam e suas variantes, Adamax e Nadam

Um otimizador funciona minimizando ou maximizando a saída de uma função objetivo (também conhecida como função de erro) representada como E (x). Essa função depende dos parâmetros aprendíveis internos do modelo usados ​​para calcular os valores alvo (Y) dos preditores (X). Dois parâmetros internos aprendíveis são pesos (W) e viés (b). Os vários algoritmos têm métodos diferentes de lidar com a função objetivo.

Você pode categorizar as funções do otimizador pela maneira como elas lidam com a derivada (dy / dx), que é a alteração instantânea de y em relação a x. Aqui estão os dois níveis de manipulação de derivativos:

  • Primeira ordem: esses algoritmos minimizam ou maximizam a função objetivo usando valores gradientes em relação aos parâmetros. Segunda ordem: esses algoritmos minimizam ou maximizam a função do objeto usando os valores derivados de segunda ordem em relação aos parâmetros. A derivada de segunda ordem pode dar uma dica sobre se a derivada de primeira ordem está aumentando ou diminuindo, o que fornece informações sobre a curvatura da linha.

Geralmente, você usa técnicas de otimização de primeira ordem em redes neurais, como o Gradient Descent, porque elas exigem menos cálculos e tendem a convergir para uma boa solução relativamente rápida ao trabalhar em grandes conjuntos de dados.

Definindo uma taxa de aprendizado de trabalho em sua rede neural

Cada otimizador possui parâmetros completamente diferentes para sintonizar sua rede neural. Uma constante é fixar a taxa de aprendizado, que representa a taxa na qual o código atualiza os pesos da rede (como o parâmetro alfa). A taxa de aprendizado pode afetar o tempo que a rede neural leva para aprender uma boa solução (o número de épocas) e o resultado. De fato, se a taxa de aprendizado for muito baixa, sua rede levará uma eternidade para aprender. Definir um valor muito alto causa instabilidade ao atualizar os pesos, e a rede nunca convergirá para uma boa solução.

Escolher uma taxa de aprendizado que funcione e treinar sua rede neural é assustador, porque você pode tentar efetivamente valores no intervalo de 0,000001 a 100. O melhor valor varia de otimizador para otimizador. O valor que você escolhe depende de que tipo de dados você possui. A teoria pode ser de pouca ajuda aqui; você precisa testar combinações diferentes antes de encontrar a taxa de aprendizado mais adequada para treinar sua rede neural com sucesso.

Apesar de toda a matemática em torno deles, ajustar as redes neurais e fazê-las funcionar melhor é principalmente uma questão de esforços empíricos para tentar diferentes combinações de arquiteturas e parâmetros.

Reserve um tempo para avaliar a taxa de aprendizado e defina-a adequadamente para garantir que sua rede neural funcione da melhor maneira possível.

  1. Como fazer o aprendizado de máquina funcionar?

Por John Paul Mueller, Luca Mueller

O aprendizado de máquina é um aplicativo de IA que pode aprender e melhorar automaticamente com a experiência sem ser explicitamente programado para isso. O aprendizado de máquina ocorre como resultado da análise de quantidades cada vez maiores de dados, para que os algoritmos básicos não sejam alterados, mas os pesos e desvios internos do código usados ​​para selecionar uma resposta específica. Claro, nada é tão simples assim. O artigo a seguir discute mais sobre o que é aprendizado de máquina, para que você possa entender seu lugar no mundo da IA ​​e o que o aprendizado profundo adquire.

Os cientistas de dados geralmente se referem à tecnologia usada para implementar o aprendizado de máquina como algoritmos. Um algoritmo é uma série de operações passo a passo, geralmente cálculos, que podem resolver um problema definido em um número finito de etapas. No aprendizado de máquina, os algoritmos usam uma série de etapas finitas para resolver o problema aprendendo com os dados.

Entendendo como o aprendizado de máquina funciona

Os algoritmos de aprendizado de máquina aprendem, mas geralmente é difícil encontrar um significado preciso para o termo aprendizado, porque existem maneiras diferentes de extrair informações dos dados, dependendo de como o algoritmo de aprendizado de máquina é criado. Geralmente, o processo de aprendizado requer grandes quantidades de dados que fornecem uma resposta esperada, com dados específicos. Cada par de entrada / resposta representa um exemplo, e mais exemplos facilitam a aprendizagem do algoritmo. Isso ocorre porque cada par de entrada / resposta se encaixa em uma linha, cluster ou outra representação estatística que define um domínio do problema.

O aprendizado de máquina é o ato de otimizar um modelo, que é uma representação matemática e resumida dos próprios dados, para que possa prever ou determinar uma resposta apropriada, mesmo quando recebe informações que nunca viu antes. Quanto mais precisão o modelo puder apresentar respostas corretas, melhor o modelo aprenderá com as entradas de dados fornecidas. Um algoritmo ajusta o modelo aos dados, e esse processo de ajuste é treinamento.

A imagem abaixo mostra um gráfico extremamente simples que simula o que ocorre no aprendizado de máquina. Nesse caso, começando com os valores de entrada 1, 4, 5, 8 e 10 e emparelhando-os com as saídas correspondentes de 7, 13, 15, 21 e 25, o algoritmo de aprendizado de máquina determina que a melhor maneira de representar o o relacionamento entre a entrada e a saída é a fórmula 2x + 5. Essa fórmula define o modelo usado para processar os dados de entrada - mesmo dados novos e não vistos - para calcular um valor de saída correspondente. A linha de tendência (o modelo) mostra o padrão formado por esse algoritmo, de forma que uma nova entrada de 3 produz uma saída prevista de 11. Mesmo que a maioria dos cenários de aprendizado de máquina seja muito mais complicada do que isso (e o algoritmo não pode criar regras que mapeiam com precisão cada entrada para uma saída precisa), o exemplo fornece uma idéia básica do que acontece. Em vez de precisar programar individualmente uma resposta para uma entrada 3, o modelo pode calcular a resposta correta com base nos pares de entrada / resposta que aprendeu.

cenário básico de aprendizado de máquina

Entendendo que o aprendizado de máquina é pura matemática

A idéia central por trás do aprendizado de máquina é que você pode representar a realidade usando uma função matemática que o algoritmo não conhece antecipadamente, mas que pode adivinhar depois de ver alguns dados (sempre na forma de entradas e saídas emparelhadas). Você pode expressar a realidade e toda a sua complexidade desafiadora em termos de funções matemáticas desconhecidas que os algoritmos de aprendizado de máquina encontram e disponibilizam como uma modificação de sua função matemática interna. Ou seja, todo algoritmo de aprendizado de máquina é construído em torno de uma função matemática modificável. A função pode ser modificada porque possui parâmetros ou pesos internos para essa finalidade. Como resultado, o algoritmo pode adaptar a função a informações específicas extraídas dos dados. Esse conceito é a idéia central de todos os tipos de algoritmos de aprendizado de máquina.

O aprendizado no aprendizado de máquina é puramente matemático e termina associando determinadas entradas a determinadas saídas. Não tem nada a ver com a compreensão do que o algoritmo aprendeu. (Quando os humanos analisam dados, construímos um entendimento dos dados até certo ponto.) O processo de aprendizado é frequentemente descrito como treinamento, porque o algoritmo é treinado para corresponder a resposta correta (a saída) a cada pergunta oferecida (a entrada). (O Machine Learning for Dummies, de John Paul Mueller e Luca Massaron, descreve como esse processo funciona em detalhes.)

Apesar da falta de entendimento deliberado e de ser um processo matemático, o aprendizado de máquina pode ser útil em muitas tarefas. Ele fornece a muitos aplicativos de IA o poder de imitar o pensamento racional, dado um determinado contexto quando o aprendizado ocorre usando os dados corretos.

Diferentes estratégias para aprendizado de máquina

O aprendizado de máquina oferece várias maneiras diferentes de aprender com os dados. Dependendo da saída esperada e do tipo de entrada que você fornece, é possível categorizar algoritmos pelo estilo de aprendizagem. O estilo escolhido depende do tipo de dados que você possui e do resultado esperado. Os quatro estilos de aprendizado usados ​​para criar algoritmos são:

  • Aprendizado de máquina supervisionado Aprendizado de máquina não supervisionado Aprendizado de máquina auto-supervisionado Aprendizado de máquina de reforço

As seções a seguir discutem esses estilos de aprendizado de máquina.

Aprendizado de máquina supervisionado

Ao trabalhar com algoritmos de aprendizado de máquina supervisionados, os dados de entrada são rotulados e têm um resultado esperado específico. Você usa o treinamento para criar um modelo que um algoritmo se encaixe nos dados. À medida que o treinamento avança, as previsões ou classificações se tornam mais precisas. Aqui estão alguns exemplos de algoritmos de aprendizado de máquina supervisionados:

  • Regressão linear ou logística SVMs (Máquinas de Vetor de Suporte) Baías ingénuas K-vizinhos mais próximos (KNN)

Você precisa distinguir entre problemas de regressão, cujo destino é um valor numérico, e problemas de classificação, cujo destino é uma variável qualitativa, como uma classe ou tag. Uma tarefa de regressão pode determinar os preços médios das casas na área de Boston, enquanto um exemplo de tarefa de classificação distingue os tipos de flores de íris com base em suas medidas de sépala e pétala. Aqui estão alguns exemplos de aprendizado de máquina supervisionado:

Aprendizado de máquina não supervisionado

Ao trabalhar com algoritmos de aprendizado de máquina não supervisionados, os dados de entrada não são rotulados e os resultados não são conhecidos. Nesse caso, a análise de estruturas nos dados produz o modelo necessário. A análise estrutural pode ter vários objetivos, como reduzir a redundância ou agrupar dados semelhantes. Exemplos de aprendizado de máquina não supervisionado são:

  • Agrupamento Detecção de anomalia Redes neurais

Aprendizado de máquina auto-supervisionado

Você encontrará todos os tipos de tipos de aprendizado descritos on-line, mas o aprendizado auto-supervisionado faz parte de uma categoria própria. Algumas pessoas o descrevem como aprendizado supervisionado autônomo, o que oferece os benefícios do aprendizado supervisionado, mas sem todo o trabalho necessário para rotular dados.

Teoricamente, a auto-supervisão pode resolver problemas com outros tipos de aprendizado que você pode usar no momento. A lista a seguir compara o aprendizado auto-supervisionado com outros tipos de aprendizado que as pessoas usam.

  • Aprendizado de máquina supervisionado: a forma mais próxima de aprendizado associada ao aprendizado auto-supervisionado é o aprendizado de máquina supervisionado porque os dois tipos de aprendizado dependem de pares de entradas e saídas rotuladas. Além disso, ambas as formas de aprendizado estão associadas à regressão e classificação. No entanto, a diferença é que o aprendizado auto-supervisionado não exige que uma pessoa rotule a saída. Em vez disso, ele se baseia em correlações, metadados incorporados ou conhecimento de domínio incorporado nos dados de entrada para descobrir contextualmente o rótulo de saída. Aprendizado de máquina não supervisionado: como o aprendizado de máquina não supervisionado, o aprendizado auto-supervisionado não exige rotulagem de dados. No entanto, o aprendizado não supervisionado se concentra na estrutura dos dados - isto é, nos padrões dos dados. Portanto, você não usa o aprendizado auto-supervisionado para tarefas como clustering, agrupamento, redução de dimensionalidade, mecanismos de recomendação ou similares. Aprendizado de máquina semi-supervisionado: Uma solução de aprendizado semi-supervisionado funciona como uma solução de aprendizado não supervisionado, na medida em que procura padrões de dados. No entanto, o aprendizado semi-supervisionado depende de uma mistura de dados rotulados e não rotulados para executar suas tarefas mais rapidamente do que é possível usando dados estritamente não rotulados. O aprendizado auto-supervisionado nunca exige rótulos e usa o contexto para executar sua tarefa, portanto, na verdade, ignorava os rótulos quando fornecidos.

Aprendizado de máquina de reforço

Você pode ver o aprendizado por reforço como uma extensão do aprendizado auto-supervisionado, porque os dois formulários usam a mesma abordagem para aprender com dados não rotulados para atingir objetivos semelhantes. No entanto, o aprendizado por reforço adiciona um ciclo de feedback à mistura. Quando uma solução de aprendizado por reforço executa uma tarefa corretamente, recebe feedback positivo, o que fortalece o modelo ao conectar as entradas e saídas de destino. Da mesma forma, ele pode receber feedback negativo por soluções incorretas. Em alguns aspectos, o sistema funciona da mesma maneira que trabalhar com um cachorro com base em um sistema de recompensas.

Treinamento, validação e teste de dados para aprendizado de máquina

O aprendizado de máquina é um processo, assim como tudo é um processo no mundo dos computadores. Para criar uma solução bem-sucedida de aprendizado de máquina, execute essas tarefas conforme necessário e quantas vezes forem necessárias:

  • Treinamento: o aprendizado de máquina começa quando você treina um modelo usando um algoritmo específico em relação a dados específicos. Os dados de treinamento são separados de quaisquer outros dados, mas também devem ser representativos. Se os dados de treinamento não representam verdadeiramente o domínio do problema, o modelo resultante não pode fornecer resultados úteis. Durante o processo de treinamento, você vê como o modelo responde aos dados de treinamento e faz alterações, conforme necessário, nos algoritmos que você usa e na maneira como os dados são massageados antes da entrada no algoritmo. Validando: Muitos conjuntos de dados são grandes o suficiente para serem divididos em uma parte de treinamento e outra de teste. Primeiro você treina o modelo usando os dados de treinamento e depois o valida usando os dados de teste. Obviamente, os dados de teste devem novamente representar o domínio do problema com precisão. Também deve ser estatisticamente compatível com os dados de treinamento. Caso contrário, você não verá resultados que refletem como o modelo realmente funcionará. Teste: depois que um modelo é treinado e validado, você ainda precisa testá-lo usando dados do mundo real. Esta etapa é importante porque você precisa verificar se o modelo realmente funcionará em um conjunto de dados maior que você não usou para treinamento ou teste. Assim como nas etapas de treinamento e validação, todos os dados usados ​​durante esta etapa devem refletir o domínio do problema com o qual você deseja interagir usando o modelo de aprendizado de máquina.

O treinamento fornece um algoritmo de aprendizado de máquina com todos os tipos de exemplos das entradas e saídas desejadas esperadas dessas entradas. O algoritmo de aprendizado de máquina usa essa entrada para criar uma função matemática. Em outras palavras, o treinamento é o processo pelo qual o algoritmo descobre como adaptar uma função aos dados. A saída dessa função é tipicamente a probabilidade de uma determinada saída ou simplesmente um valor numérico como saída.

Para ter uma idéia do que acontece no processo de treinamento, imagine uma criança aprendendo a distinguir árvores de objetos, animais e pessoas. Antes que a criança possa fazer isso de maneira independente, o professor apresenta à criança um certo número de imagens de árvores, completo com todos os fatos que tornam uma árvore distinguível de outros objetos do mundo. Tais fatos podem ser características, como o material da árvore (madeira), suas partes (tronco, galhos, folhas ou agulhas, raízes) e localização (plantada no solo). A criança constrói um entendimento de como é uma árvore, contrastando a exibição dos elementos da árvore com as imagens de outros exemplos diferentes, como móveis feitos de madeira, mas não compartilham outras características com uma árvore.

Um classificador de aprendizado de máquina funciona da mesma maneira. Um algoritmo classificador fornece uma classe como saída. Por exemplo, pode-se dizer que a foto que você fornece como entrada corresponde à classe da árvore (e não a um animal ou a uma pessoa). Para fazer isso, constrói suas capacidades cognitivas criando uma formulação matemática que inclui todos os recursos de entrada fornecidos de uma maneira que cria uma função que pode distinguir uma classe da outra.

Procurando generalização no aprendizado de máquina

Para ser útil, um modelo de aprendizado de máquina deve representar uma visão geral dos dados fornecidos. Se o modelo não segue os dados de perto o suficiente, fica com pouca roupa - ou seja, não é adequado o suficiente devido à falta de treinamento. Por outro lado, se o modelo segue os dados muito de perto, é super ajustado, seguindo os pontos de dados como uma luva por causa de muito treinamento. A adequação e super adequação causam problemas porque o modelo não é generalizado o suficiente para produzir resultados úteis. Dados dados de entrada desconhecidos, as previsões ou classificações resultantes conterão grandes valores de erro. Somente quando o modelo estiver corretamente ajustado aos dados, ele fornecerá resultados dentro de um intervalo de erros razoável.

Toda essa questão de generalização também é importante para decidir quando usar o aprendizado de máquina. Uma solução de aprendizado de máquina sempre generaliza de exemplos específicos para exemplos gerais do mesmo tipo. O desempenho dessa tarefa depende da orientação da solução de aprendizado de máquina e dos algoritmos usados ​​para fazê-la funcionar.

O problema para cientistas de dados e outras pessoas que usam técnicas de aprendizado de máquina e aprendizado profundo é que o computador não exibirá uma placa informando que o modelo se ajusta corretamente aos dados. Freqüentemente, é uma questão de intuição humana decidir quando um modelo é treinado o suficiente para fornecer um bom resultado generalizado. Além disso, o criador da solução deve escolher o algoritmo correto dentre os milhares que existem. Sem o algoritmo certo para ajustar o modelo aos dados, os resultados serão decepcionantes. Para que o processo de seleção funcione, o cientista de dados deve possuir

  • Um forte conhecimento dos algoritmos de aprendizado de máquina disponíveis Experiência em lidar com o tipo de dados em questão Uma compreensão da saída desejada Desejo de experimentar vários algoritmos de aprendizado de máquina

O último requisito é o mais importante, porque não há regras rígidas que digam que um algoritmo específico funcione com todos os tipos de dados em todas as situações possíveis. Se fosse esse o caso, muitos algoritmos não estariam disponíveis. Para encontrar o melhor algoritmo, o cientista de dados geralmente recorre a experimentar vários algoritmos e comparar os resultados.

Conhecer os limites do viés

Seu computador não possui viés. Não tem como objetivo dominar o mundo ou dificultar sua vida. De fato, os computadores não têm objetivos de nenhum tipo. A única coisa que um computador pode fornecer é a saída com base em entradas e técnicas de processamento. No entanto, o viés ainda entra no computador e prejudica os resultados que ele fornece de várias maneiras:

  • Dados: Os dados em si podem conter erros de interpretação ou simplesmente deturpações. Por exemplo, se um valor específico aparece duas vezes mais nos dados do que no mundo real, a saída de uma solução de aprendizado de máquina é contaminada, mesmo que os dados em si estejam corretos. Algoritmo: O uso do algoritmo errado fará com que a solução de aprendizado de máquina ajuste o modelo aos dados incorretamente. Treinamento: Muito ou pouco treinamento muda a forma como o modelo se ajusta aos dados e, portanto, ao resultado. Interpretação humana: mesmo quando uma solução de aprendizado de máquina gera um resultado correto, o ser humano que usa essa saída pode interpretá-la mal. Os resultados são tão ruins quanto, e talvez piores do que, quando a solução de aprendizado de máquina não funciona como previsto.

Você precisa considerar os efeitos do viés, independentemente do tipo de solução de aprendizado de máquina que você criar. É importante saber que tipos de limites esses vieses impõem à sua solução de aprendizado de máquina e se a solução é confiável o suficiente para fornecer resultados úteis.

Mantendo a complexidade do modelo em mente para o aprendizado de máquina

Mais simples é sempre melhor quando se trata de aprendizado de máquina. Muitos algoritmos diferentes podem fornecer resultados úteis da sua solução de aprendizado de máquina, mas o melhor algoritmo a ser usado é o mais fácil de entender e fornece os resultados mais diretos. O Navalha de Occam é geralmente reconhecido como a melhor estratégia a seguir. Basicamente, o Navalha da Occam diz para você usar a solução mais simples que resolverá um problema específico. À medida que a complexidade aumenta, também aumenta o potencial de erros.

O fator norteador mais importante ao selecionar um algoritmo deve ser a simplicidade.