Cada serviço Yandex é amplamente baseado em métodos de análise de dados e aprendizado de máquina. Eles são necessários para classificar os resultados da pesquisa na web, pesquisar imagens e formar blocos de recomendação. O aprendizado de máquina nos permite criar veículos não tripulados e assistentes de voz, reduzir o tempo de inatividade inútil para motoristas de táxi e reduzir o tempo de espera de seus clientes. Todas as aplicações e não listar!
Portanto, sempre sentimos a necessidade de especialistas em análise de dados e aprendizado de máquina. Um dos estágios mais importantes de uma entrevista no Yandex para eles é a seção geral sobre aprendizado de máquina, que discutirei neste artigo. Um exemplo da tarefa de modelo para esta seção e o possível conteúdo da resposta que criei em um vídeo recentemente disponibilizado no YouTube . Neste artigo, falarei mais sobre o que esperamos de um candidato forte nessa seção e por que formulamos precisamente esses critérios.

1. Entrevistas de aprendizado de máquina Yandex
Os funcionários seniores e líderes da Yandex são capazes de transformar independentemente as tarefas formuladas em termos de negócios em tarefas de aprendizado de máquina corretamente colocadas; escolha os métodos de solução apropriados, forme descrições de características, construa o processo de atualização dos modelos e o controle correto de sua qualidade; finalmente, verifique se as soluções resultantes atendem aos requisitos originais de negócios.
Em grande medida, essas pessoas influenciam // a formação de // requisitos de negócios: as pessoas que trabalham diretamente com dados podem conhecer melhor no mundo quais características dos serviços afetam sua popularidade e utilidade, quais problemas os usuários precisam resolver e em quais indicadores isso afetará.
Como regra, nossos melhores funcionários também possuem conhecimento especializado em áreas específicas - por exemplo, visão computacional, construção de modelos ou modelos de linguagem para serviços de consultoria ou pesquisa.
Realmente apreciamos nossos funcionários e seus conhecimentos e queremos que candidatos externos também atendam a esse nível. Para testar isso, uma ou mais seções podem ser dedicadas a tópicos especiais, como visão computacional ou métodos de treinamento de classificação. Uma das seções é obrigatoriamente dedicada a questões “gerais”: declaração do problema, formação da função objetivo e amostra de treinamento, aceitação de modelos. É sobre ela agora e será discutido.
Obviamente, toda a gama de requisitos se aplica apenas aos candidatos que se candidatam aos cargos de especialistas seniores ou líderes. Os candidatos que dependem de cargos médios ou juniores não precisam ser capazes de fazer tudo isso acima, mas devem saber que as habilidades relevantes são extremamente úteis para o crescimento na carreira - tanto na Yandex quanto em outras empresas.
Dependendo dos requisitos da unidade, uma seção de algoritmo com código de escrita ou mesmo uma seção de arquitetura também pode ser necessária.
2. Declaração do problema
Portanto, a principal tarefa da seção é verificar o quanto o candidato é capaz de lidar com a tarefa de maneira independente, começando pela sua formulação e terminando com as questões de aceitação nas experiências do usuário.
A seção começa com a declaração do problema em termos comerciais. Digamos, você pode precisar criar um serviço que solicite estabelecimentos próximos, recomende certos produtos ou classifique filmes ou músicas que são de interesse dos usuários.
Você pode começar identificando possíveis aplicativos para a tarefa em questão. Quantos usuários terão a solução resultante, quem são eles, por que precisam dessa funcionalidade e como descobrem isso? O candidato pode fazer todas essas perguntas ou pode oferecer sua própria visão das respostas (a última opção, é claro, é preferível).
Com base nas causas da tarefa, as métricas de negócios são formuladas e, em seguida, são adequadas para otimização no processo de aprendizado ou na seleção de modelos. Um indicador de uma classe extremamente alta de candidato é se a escolha das métricas para otimização é ditada pelo significado físico do problema que está sendo resolvido. O exemplo mais simples desse tipo é o uso de métricas do tipo DCG para tarefas de classificação ou métricas do tipo AUC para alguns problemas específicos de classificação.
Aqui também é necessário abordar a questão da formação de uma amostra de treinamento. Quais dados são necessários para sua formação, como obtê-los? O que é um evento para o nosso treinamento? É necessária amostragem? Se sim, como fazê-lo?
3. Métodos de aprendizado de máquina
Após a tarefa ser totalmente formulada, você poderá começar a discutir métodos para resolvê-la.
Aqui você precisa escolher um modelo que construa a solução e justifique sua escolha. Vale a pena falar sobre qual perda funcional é otimizada no processo de construção do modelo e por que é uma boa opção para otimizar as métricas discutidas no parágrafo anterior. Também é útil considerar o método de otimização usado.
O próximo item a ser discutido é o espaço de recursos. Um especialista de classe pode criar várias dezenas ou mesmo centenas de sinais imediatamente em uma nova tarefa, dividindo-os anteriormente em várias classes de acordo com os tipos de dados utilizados (por exemplo, os sinais podem depender apenas do usuário ou do par "usuário-objeto").
Uma vantagem adicional é a consideração do problema de partida a frio. Quando o serviço Yandex.Taxi já foi criado, podemos usar informações sobre viagens reais para otimizar os métodos de roteamento pela cidade; quando já existe um mecanismo de pesquisa Yandex, você pode usar ações do usuário para receber sinais sobre quais documentos são relevantes para suas consultas. Mas e se o serviço ainda não tiver sido criado e o problema a ser resolvido for crítico para o seu funcionamento? Precisamos oferecer uma maneira de criar uma solução razoavelmente boa nesse caso.
4. Controle de qualidade
Finalmente, quando a solução estiver pronta, você precisará garantir que ela seja boa o suficiente. Se a decisão anterior foi precedida por outra anterior, é necessário entender se a nova solução é melhor.
Nesse ponto, o candidato precisa demonstrar sua capacidade de formular experimentos para testar hipóteses relevantes. Aqui você precisa escolher um modelo de experimento e uma maneira de testar a significância estatística das alterações. Digamos que pode ser um experimento A / B regular para os usuários do serviço ou uma avaliação especializada dos resultados do trabalho. Quais indicadores devem ser monitorados? O que deve ser monitorado e como garantir a correção do experimento?
5. Como ter sucesso na seção
O nível do candidato é completamente determinado por quão independente e profundamente ele conseguiu declarar a solução da tarefa. Uma seção de aprendizado de máquina bem conduzida é indistinguível de uma seção conhecida por nossos colegas ocidentais como Design de Sistemas ML, e uma seção fraca pode parecer uma discussão de uma questão especial - por exemplo, otimização de LLH por regras de divisão linear.
Ao mesmo tempo, entendemos bem que, nos problemas de aprendizado de máquina, muitas vezes não está claro qual método funcionará e se pelo menos alguns funcionarão. Portanto, sinta-se à vontade para discutir o problema com o interlocutor como se fosse seu colega com quem você decidiu discutir possíveis soluções para o problema que surgiram no curso normal do trabalho. Não exigimos que a solução descrita na seção seja garantida como boa - queremos apenas que ela tenha uma justificativa razoável, nos permitindo acreditar que você lidará com uma tarefa semelhante em condições reais.
Por exemplo, não exigimos um conhecimento profundo de vários critérios estatísticos, mas esperamos que você reconheça a importância de testar corretamente as hipóteses e seja qualificado para usar esses métodos, se necessário. Da mesma forma, esta seção não requer uma descrição detalhada da operação dos métodos de aprendizado de máquina, mas esperamos que você possa escolher razoavelmente certos modelos para suas tarefas.
Ao mesmo tempo, você é livre para se aprofundar nas áreas bem conhecidas por você. Gaste mais tempo em sua resposta e menos converse sobre onde seu conhecimento não é tão profundo. Entendemos que é impossível ser especialista em todas as áreas e, ao mesmo tempo, valorizamos a honestidade intelectual. Se um candidato entende bem seus pontos fortes e fracos e é capaz de falar abertamente sobre isso, esse é um sinal muito bom. Além disso, isso permite que você gaste efetivamente o tempo da seção: será gasto mais na identificação dos pontos fortes do candidato.
Por fim, apresentarei algumas fontes, que serão úteis para estudar, tanto para trabalhar com êxito em projetos relacionados ao aprendizado de máquina, quanto para preparar a seção de aprendizado de máquina.
Bem, nosso vídeo do YouTube: