Connect with us

Статьи

Настоящее и будущее машинного обучения на устройствах

Специалист по глубокому обучению Маттейс Холлеманс рассмотрел перспективы машинного обучения на устройствах и как его можно использовать уже сейчас.

Анна Гуляева

Опубликовано

/

     
     

Как вы, конечно, заметили, машинное обучение на устройствах сейчас все больше развивается. Apple упомянула это около ста раз во время WWDC 2017. Неудивительно, что разработчики хотят добавить машинное обучение в свои приложения.

Однако многие из этих моделей обучения используются только для совершения выводов на основе ограниченного набора знаний. Несмотря на термин “машинное обучение”, никакого обучения на устройстве не происходит, знание находится внутри модели и не улучшается со временем.

Нейросеть для определения лиц, встроенная в смартфон

Причина этого заключается в том, что обучение модели требует большой вычислительной мощности, а мобильные телефоны пока на это не способны. Гораздо проще обучать модели офлайн на серверной ферме, а все улучшения модели включать в обновление приложения.

Стоит отметить, что обучение на устройстве имеет смысл для некоторых приложений, и я верю, что со временем такое обучение моделей станет таким же привычным, как использование моделей для прогнозирования. В этом тексте я хочу исследовать возможности этой технологии.

Машинное обучение сегодня

Самым распространенным применением глубокого и машинного обучения в приложениях сейчас является компьютерное зрение для анализа фото и видео. Но машинное обучение не ограничено изображениями, оно также используется для аудио, языка, временных последовательностей и других типов данных. Современный телефон имеет множество различных сенсоров и быстрое соединение с интернетом, что приводит к большому количеству данных, доступных для моделей.

iOS использует несколько моделей глубокого обучения на устройствах: распознавание лиц на фото, фразы «Привет, Siri» и рукописных китайских иероглифов. Но все эти модели ничему не учатся от пользователя.

Почти все API машинного обучения (MPSCNN, TensorFlow Lite, Caffe2) могут делать предсказания на основе пользовательских данных, но вы не можете заставить эти модели узнавать новое из этих данных.

Сейчас обучение происходит на сервере с большим количеством GPU. Это медленный процесс, требующий большое количество данных. Сверточная нейронная сеть, например, обучается на тысячах или миллионах изображений. Обучение такой сети с нуля займет несколько дней на мощном сервере, несколько недель на компьютере и целую вечность на мобильном устройстве.

Обучение на сервере — это хорошая стратегия, если обновление модели происходит нерегулярно, и каждый пользователь использует одну и ту же модель. Приложение получает обновление модели каждый раз при обновлении приложения в App Store или при периодической загрузке новых параметров из облака.

Сейчас обучение больших моделей на устройстве невозможно, но так будет не всегда. Эти модели и не должны быть большими. И самое важное: одна модель для всех может быть не лучшим решением.

Зачем нужно обучение на устройстве?

Существует несколько преимуществ обучения на устройстве:

  • Приложение может учиться на данных или поведении пользователя.
  • Данные будут оставаться на устройстве.
  • Перевод любого процесса на устройство экономит деньги.
  • Модель будет обучаться и обновляться непрерывно.

Это решение подойдет не для каждой ситуации, но для него найдутся свои применения. Я думаю, что его главным преимуществом является возможность подгонки модели под конкретного пользователя.

На iOS-устройствах это уже делают некоторые приложения:

  • Клавиатура учится на основе текстов, которые вы набираете, и делает предположения о следующем слове в предложении. Эта модель обучается конкретно для вас, а не для других пользователей. Так как обучение происходит на устройстве, ваши сообщения не отправляются на облачный сервер.
  • Приложение «Фото» автоматически организует изображения в альбом «Люди». Я не совсем уверен, как это работает, но программа использует API распознавания лиц на фото и размещает похожие лица вместе. Возможно, это просто неконтролируемая кластеризация, но обучение все равно должно происходить, так как приложение позволяет вам исправлять его ошибки и совершенствуется на основе вашей обратной связи. Вне зависимости от вида алгоритма это приложение — хороший пример кастомизации пользовательского опыта на основе их данных.
  • Touch ID и Face ID учатся на основе вашего отпечатка пальца или лица. Face ID продолжает учиться со временем, поэтому, если вы отрастите бороду или начнете носить очки, оно по-прежнему будет узнавать ваше лицо.
  • Обнаружение движения. Apple Watch изучает ваши привычки, например, изменение биения сердца во время разных активностей. Опять же, я не знаю, как это работает, но, очевидно, обучение должно происходить.
  • Clarifai Mobile SDK позволяет пользователям создавать свои модели классификации изображений при помощи фотографий предметов и их обозначения. Обычно классификационная модель требует тысячи изображений для обучения, но этот SDK может научиться всего на нескольких примерах. Возможность создавать классификаторы изображений из ваших собственных фото, не будучи экспертом в машинном обучении, имеет много практических применений.

Некоторые из этих задач проще, чем остальные. Часто «обучение» является просто запоминанием последнего действия пользователя. Для многих приложений этого достаточно, и это не требует причудливых алгоритмов машинного обучения.

Модель клавиатуры достаточно проста, и обучение может происходить в режиме реального времени. Приложение «Фото» обучается медленнее и расходует много энергии, поэтому обучение происходит, когда устройство находится на зарядке. Многие практические применения обучения на устройстве находятся между этими двумя крайностями.

Другие существующие примеры включают в себя определение спама (ваш email-клиент учится на письмах, которые вы определяете как спам), коррекцию текста (она изучает ваши наиболее частые ошибки при наборе текста и исправляет их) и умные календари, вроде Google Now, которые учатся распознавать ваши регулярные действия.

Насколько далеко мы можем зайти?

Если целью обучения на устройстве является адаптация модели машинного обучения к потребностям или поведению конкретных пользователей, то что мы можем с этим делать?

Вот забавный пример: нейронная сеть превращает рисунки в эмодзи. Она просит вас нарисовать несколько разных фигур и учит модель распознавать их. Это приложение реализовано на Swift Playground, не самой быстрой платформе. Но даже при таких условиях нейронная сеть учится недолго — на устройстве это занимает всего несколько секунд (вот как работает эта модель).

Если ваша модель тоже не очень сложна, как эта двухслойная нейронная сеть, вы уже можете проводить обучение на устройстве.

Примечание: на iPhone X у разработчиков есть доступ к 3D-модели пользовательского лица в низком разрешении. Вы можете использовать эти данные, чтобы обучить модель, которая выбирает эмодзи или другое действие в приложение на основе выражения лица пользователей.

Вот несколько других будущих возможностей:

  • Smart Reply — это модель от Google, которая анализирует входящее сообщение или письмо и предлагает подходящий ответ. Она пока не обучается на устройстве и рекомендует одни и те же ответы всем пользователям, но (в теории) она может обучаться на текстах пользователя, что значительно улучшит модель.
  • Распознавание почерка, которое будет учиться именно на вашем почерке. Это особенно полезно на iPad Pro с Pencil. Это не новая функция, но если у вас такой же плохой почерк, как и у меня, то стандартная модель будет допускать слишком много ошибок.
  • Распознавание речи, которое будет становиться более точным и подстроенным под ваш голос.
  • Трекинг сна/фитнес-приложения. Прежде чем эти приложения будут давать вам советы об улучшении здоровья, им нужно узнать вас. Из соображений безопасности этим данным лучше оставаться на устройстве.
  • Персонализированные модели для диалога. Нам ещё предстоит увидеть будущее чат-ботов, но их преимущество заключается в том, что бот может адаптироваться под вас. Когда вы говорите с чат-ботом, ваше устройство будет изучать вашу речь и предпочтения и изменять ответы чат-бота под вашу личность и манеру общения (например, Siri может учиться давать меньше комментариев).
  • Улучшенная реклама. Никому не нравится реклама, но машинное обучение может сделать её менее назойливой для пользователей и более прибыльной для рекламодателя. Например, рекламный SDK может изучать, как часто вы смотрите и кликаете на рекламу, и подбирать более подходящую рекламу для вас. Приложение может обучать локальную модель, которая будет запрашивать только рекламу, работающую для конкретного пользователя.
  • Рекомендации — это распространенное использование машинного обучения. Проигрыватель подкастов может обучаться на программах, которые вы слушали, чтобы давать советы. Сейчас приложения осуществляют эту операцию в облаке, но это можно делать и на устройстве.
  • Людям с ограниченными возможностями приложения могут помогать ориентироваться в пространстве и лучше его понимать. Я не разбираюсь в этом, но могу представить, что приложения могут помогать, например, различать разные лекарства при помощи камеры.

Это только несколько идей. Так как все люди разные, модели машинного обучения могли бы подстраиваться под наши конкретные нужды и желания. Обучение на устройстве позволяет создать уникальную модель для уникального пользователя.

Разные сценарии обучения моделей

Перед применением модели вам нужно её обучить. Обучение нужно продолжать и далее, чтобы улучшать модель.

Существует несколько вариантов обучения:

  1. Отсутствие обучения на данных пользователя. Сбор собственных данных или использование публично доступных данных для создания единой модели. При улучшении модели вы выпускаете обновление приложения или просто загружаете в него новые параметры. Так делают большинство существующих приложений с машинным обучением.
  2. Централизованное обучение. Если ваше приложение или сервис уже требует данные от пользователя, которые хранятся на ваших серверах, и у вас есть к ним доступ, тогда вы можете осуществлять обучение на основе этих данных на своем сервере. Пользовательские данные можно использовать для обучения под конкретного пользователя или под всех пользователей. Так поступают платформы вроде Facebook. Этот вариант вызывает вопросы, связанные с приватностью, безопасностью, масштабированием и многие другие. Вопрос с приватностью можно решить методом «избирательной приватности» Apple, но и у него есть свои последствия.
  3. Коллаборативное обучение. Этот способ перемещает затраты на обучение на самих пользователей. Обучение происходит на устройстве, и каждый пользователь обучает небольшую часть модели. Обновления модели отправляются другим пользователям, так что они могут учиться на ваших данных, а вы — на их. Но это по-прежнему единая модель, и у всех в итоге оказываются одни и те же параметры. Главным плюсом такого обучения является его децентрализованность. В теории это лучше для приватности, но, согласно исследованиям, этот вариант может быть хуже.
  4. Каждый пользователь обучает собственную модель. В этом варианте лично я заинтересован больше всего. Модель может учиться с нуля (как в примере с рисунками и эмодзи) или это может быть обученная модель, которая настраивается под ваши данные. В любом случае модель можно совершенствовать со временем. Например, клавиатура начинает с уже обученной на определенном языке модели, но со временем учится предсказывать, какое предложение вы хотите написать. Минусом этого подхода является то, что другие пользователи не могут получить от этого пользу. Так что этот вариант работает только для приложений, которые используют уникальные данные.

Как осуществлять обучение на устройстве?

Стоит помнить, что обучение на данных пользователя отличается от обучения на большом объеме данных. Начальную модель клавиатуры можно обучить на стандартном корпусе текстов (например, на всех текстах Википедии), но текстовое сообщение или письмо будет написано языком, отличающимся от типичной статьи в Википедии. И этот стиль будет отличаться от пользователя к пользователю. Модель должна предусматривать эти виды вариаций.

Проблема также заключается в том, что наши лучшие методы глубокого обучения довольно неэффективны и грубы. Как я уже говорил, обучение классификатора изображений может занять дни или недели. Обучающий процесс, стохастический градиентный спуск, проходит по небольшим этапам. В наборе данных может быть миллион изображений, каждое из которых нейронная сеть просмотрит около ста раз.

Очевидно, этот метод не подходит для мобильных устройств. Но зачастую вам не нужно обучать модель с нуля. Многие люди берут уже обученную модель и затем используют transfer learning на основе своих данных. Но эти небольшие наборы данных все равно состоят из тысяч изображений, и даже так обучение происходит слишком медленно.

С нашими текущими методами обучения настройка моделей на устройстве все ещё далека. Но не все потеряно. Простые модели уже можно обучить на устройстве. Такие классические модели машинного обучения, как логистическая регрессия, дерево принятия решений или наивный байесовский классификатор, можно быстро обучить, особенно при использовании методов оптимизации второго порядка, таких как L-BFGS или сопряженный градиент. Даже базовая рекуррентная нейронная сеть должна быть доступна для реализации.

Для клавиатуры может сработать метод онлайн-обучения. Вы можете проводить сеанс обучения после определенного количества слов, набранных пользователем. То же самое относится к моделям, использующим акселерометр и информацию о движении, где данные поступают в виде постоянного потока цифр. Так как эти модели обучаются на небольшой части данных, каждое обновление должно происходить быстро. Поэтому, если ваша модель небольшая и у вас не так много данных, то обучение будет занимать секунды. Но если ваша модель имеет больший размер или у вас много данных, тогда вам нужно проявить творческий подход. Если модель изучает лица людей в вашей галерее фото, у нее слишком много данных для обработки, и вам нужно найти баланс между скоростью и точностью алгоритма.

Вот ещё несколько проблем, с которыми предстоит столкнуться при обучении на устройстве:

  • Большие модели. Для сетей глубокого обучения текущие методы обучения проходят слишком медленно и требуют слишком много данных. Многие исследования сейчас посвящены обучению моделей на небольшом количестве данных (например, на одном фото) и за небольшое число шагов. Я уверен, что любой прогресс приведет к распространению обучения на устройстве.
  • Несколько устройств. Вероятно, вы пользуетесь не одним устройством. Ещё предстоит решить вопрос передачи данных и моделей между устройствами пользователя. Например, приложение «Фото» в iOS 10 не передает информацию о лицах людей между устройствами, поэтому обучается на всех устройствах отдельно.
  • Обновления приложения. Если ваше приложение включает обученную модель, которая подстраивается под поведение и данные пользователя, то что происходит, когда вы обновляете модель вместе с приложением?

Обучение на устройстве пока находится в начале своего развития, но мне кажется, что эта технология неизбежно станет важной в создании приложений.

 

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Дизайн и прототипирование

30 UI-китов для iOS-разработчиков

Соосновательница Flawless App Лиза Дзюба поделилась полезными наборами с готовыми интерфейсами iOS-приложений.

Анна Гуляева

Опубликовано

/

UI-киты — это отличная возможность, которая поможет вам начать работать с дизайном iOS-приложений. Они представляют из себя наборы различных элементов интерфейса с возможностью редактирования: это элементы навигации, кнопки, формы входа и многое другое. Все представленные в этом списке UI-киты бесплатные и сделаны для использования на платформе iOS.

Стандартные UI-киты

Design+Code iOS 11 UI Kit —  Sketch-набор, который содержит стили текстов, вложенные символы с изменяемыми размерами и набор компонентов в темной теме. Название каждого компонента соответствует документации Apple.

iOS 11 Screens & Components — огромная коллекция ключевых компонентов iOS 11 и более 60 экранов, доступна для Sketch и Figma.

iOS 11 GUI for Sketch App — набор содержит 22 экрана, 10 клавиатур, векторные элементы и формы, доступные в формате Sketch.

iOS 11 iPhone GUI by Facebook — полный набор файлов для Origami, Sketch и Photoshop от команды Facebook.

UI-киты для социальных приложений

Bronze UI Kit — простой и изменяемый набор с формами регистрации, входа, профилем пользователя, экранами блога и шаблонами для статей. Доступен в формате Photoshop и подходит не только для iOS.

Mail UI Kit — новейший кроссплатформенный набор от InVision, который подойдет для десктопа, смартфона, планшета и умных часов, доступен в Sketch и Photoshop.

Snap UI Kit — UI-кит от сотрудников Marvel, включающий более 50 экранов и большое количество элементов в формате файлов для Sketch. Подойдет для создания приложения с фото.

UI-киты для приложений про путешествия

Travel App UI Kit — более 15 экранов для входа, просмотра информации о месте, фотографий, карты и многого другого.

Navigo UI Kit — UI-кит для приложения про поездки с социальными профилями, в котором находится 60 экранов, организованных в 6 категорий. Набор сделан в формате Adobe XD.

Travel Guide App UI Kit — это не совсем набор элементов, а концепция реального приложения, которое оптимизировано для iPhone X, чтобы показать наилучшее использование фильтра локаций и карт.

Travelisto UI Kit — UI-набор для Sketch с более чем 22 экранами в векторном формате.

Harmony UI Kit — концепция основанного на локации мобильного приложения для того, чтобы искать и оценивать места для прогулок вокруг вас.

UI-киты для приложений с рецептами

Delicious UI Kit — набор включает 11 экранов в формате Sketch.

iOS Recipes App UI Kit — отличный набор с 11 экранами для приложения о готовке в формате Sketch.

1357 Recipe App UI Kit — современный и элегантный набор с 25 базовыми экранами.

UI-киты для чатов и мессенджеров

Mochi — Chat UI Kit — милый набор для мобильного чата с экранами для входа, регистрации, списков чатов, контактов и других.

iOS WeChat UI Kit — этот UI-кит включает в себя множество элементов и взаимодействий для главного китайского приложения WeChat, доступных на английском и китайском.

Messenger Platform Design Kit — официальный набор для бота Facebook Messenger.

UI-киты для eCommerce

Minimal Chic Kit стильный UI-кит для приложения о продаже с экранами страниц категорий товаров и самих товаров, доступных в формате Adobe XD.

Portal freebie — пример приложения, сделанного в Sketch.

Wilhelm iOS UI Kit — набор с изменяемыми экранами в Sketch, которые подойдут не только для продаж, но и для социального приложения.

Helen UI Kit — профессионально разработанный набор пользовательских интерфейсов для Sketch и Photoshop, организованных в более чем 11 экранов.

Mcommerce UI Kit —  набор стильных пользовательских интерфейсов для продаж с более чем 120 экранами, созданными для Sketch.

Другие UI-киты

iOS 11 Place UI Kit — если вы планируете сделать мобильное приложение в ARKit, вы можете использовать набор пользовательского интерфейса, который содержит 22 экрана для iOS 11 и векторные значки (в бесплатной версии).

Movies App UI Kit — красочный набор, который включает более 30 экранов с полностью настраиваемыми макетами и слоями для Sketch.

Wonep Calling App — довольно крутой набор для создания приложения для совершения международных звонков.

Banking UI Kit — аккуратный набор для пользовательского интерфейса банка для Sketch с 50 экранами.

Real Estate App UI Kit — UI-кит для создания приложения о недвижимости с 25 элементами, организованными в 8 страниц в формате Sketch.

DO UI Kit — набор для приложения для заметок с более чем 130 экранами, 10 темами, в котором есть все нужное в форматах для Sketch, Photoshop и Craft.

Надеюсь, что эти наборы сделают вашу работу проще и вдохновят вас начать изучать дизайн. Вы можете найти больше бесплатных ресурсов на этих сайтах:

Комментарии
Продолжить чтение

Обучение

Пять способов развиваться и качественно писать код, когда всем плевать

Советы от разработчицы Натальи Максименко, разработавшей стратегию развития, которая поможет совершенствоваться в условиях любой компании.

Анна Гуляева

Опубликовано

/

2 октября 2017 я получила первую зарплату в качестве Rails-разработчика. Я получила работу в компании по веб-разработке, которая до этого использовала Rails всего полтора месяца. На собеседовании я была рада услышать об этом. Но с тех пор мое отношение изменилось и в этой статье я попытаюсь объяснить почему.

Взгляд назад

Я работала веб-разработчиком и ранее, но в начале прошлого года поняла, что недовольна своей карьерой. Я не могла понять, почему так происходит, пока не прочитала статью Three types of programmers, которая перевернула мой взгляд:

Язык программирования требует определенную модель мышления, и продуктивность программиста зависит от того, соответствует ли его мышление требуемой модели языка, с которым он работает.

Может быть, дело в этом? Для меня всегда важно, чтобы моя работа выглядела хорошо, но когда я начала работать, то поняла, что клиента не волнует качество кода, если все работает, хорошо выглядит и сделано в срок. Вместо создания идеального кода я получила уныние и упадок.  Вот что часто нужно было заказчикам:

  • Если происходит сбой, его нужно исправить;
  • “Нам нужно начать промоакцию в понедельник”, поэтому работать нужно все выходные;
  • “Мы перенесли все на новый сервер, интеграция сработает, верно?” — “Дайте мне доступ, я проверю настройки.”

И если вы делаете все это на PHP, то начинаете нервничать и становитесь подозрительнее, а кроме того выполняете много монотонной работы. Поэтому я начала изучать Ruby.

Я хотела начать свою карьеру с чистого листа и перестать жертвовать качеством кода в угоду требованиям бизнеса. Это означает тестирование кода, обдумывание решений достаточно длительное время и использование новых технологий. Так я могу улучшать свои навыки вместо того, чтобы быть просто исполнителем.

Когда пришло время искать работу, это заняло у меня некоторое время. Мне пришлось забыть о предыдущих проектах и более высокой зарплате. Но была уверена, что найду работу своей мечты. Мое собеседование прошло в среду вечером, и уже в четверг утром меня ждали в офисе. Мне сказали, что моих знаний “недостает совсем немного до junior-позиции”, и пригласили в проект. И тогда мои идеи начали рушиться одна за другой.

Новая работа

Оказалось, что этот проект начался ещё в 2014. В проекте использовались Rails 4.1 и Ruby 2.2.3, а также было много технических проблем, которые не были исправлены уже год. Ничего не тестировалось уже долгое время: в папке было только несколько тестов, и они явно были написаны на ранних стадиях проекта.

Помимо технических проблем, сложности были и с менеджментом. Процесс разработки был разделен на несколько команд, а дедлайны и требования игнорировали реальные возможности программистов. У разработчиков было время только на написание кода. Фазы размышления о стратегии, тестирования и устранения багов были оставлены в стороне. Более того, старые части кода не рефакторились, потому что на это не было времени. Такие проблемы распространены, и многие иногда с ними встречаются. Что тогда стоит делать разработчикам? Или…

Как справиться со всем этим?

Существует два уровня проблем: проблемы на уровне компании или проекта и персональные проблемы с уровнем навыков и организацией работы.

Определенно проще начать с себя. Если мы повторяем какие-либо действия постоянно, мозг создает модель для этих действий и использует её в любом возможном случае. Если программист жертвует качеством кода в нескольких случаях, он или она будет писать плохой код по умолчанию. Даже если вы пишете плохой код по работе, а качественный код — для себя, это приведет к той же ситуации, потому что паттерн поведения все равно будет формироваться, а количество времени на работе превосходит количество времени на личные проекты.

Я обнаружила пять проблем, которые могут превратить меня в плохого программиста, и способы их решения, которые помогут мне и дальше развиваться и наслаждаться процессом.

1. Большой незнакомый проект

Большую часть времени я провожу за поиском информации, пытаясь понять проект и его работу. После этого возникает проблема изучения ранее написанного кода. Для начала я в общем изучаю предметную область. Так я узнаю основные термины, которые будут всплывать в каждой задаче. Затем я ищу эти термины в объектах, например, моделях или базах данных. И уже потом я могу анализировать сами объекты и искать связи между ними.

Вторая фаза — момент, когда я получаю конкретное задание. Сначала я прошу менеджера или тестировщика показать мне нужное место в интерфейсе. Если у меня возникают проблемы с пониманием кода, я прошу помощи у тех, кто уже работает с проектом некоторое время.

2. Нехватка времени на тестирование

Даже если клиент отодвигает дедлайн, тестирование необходимо в разработке. Даже если менеджер говорит что-то вроде “Тебе нужно писать не тесты, а код без багов”, я не слушаю и пишу тесты. Когда я изначально оцениваю необходимое на завершение задачи время, я включаю туда время на тестирование, просто не говорю об этом.Так проще.

3. Недостаточная спецификация задачи

Иногда некоторые требования возникают только на стадии разработки. Более того. существует большой разрыв между тем, как интерфейс выглядит и как он на самом деле работает. Если менеджер не понимает величину этого разрыва, он или она будет ставить невыполнимые задачи или злиться, почему одна маленькая вещь занимает столько времени.

Чтобы предотвратить объяснения и изменения, лучше прояснить все во время процесса оценки задачи. Также я проверяю, чтобы все материалы для выполнения задачи были готовы, хотя это и не моя работа. Это особенно полезно, когда мы не можем завершить задачу из-за того, что какие-то интерфейсы или тексты не готовы.

4. Ревью кода в конце задачи

Это часто происходит перед самым дедлайном. И в случае неожиданных проблем, вам придется делать все в спешке и без возможности обсудить решение позже.

Я решаю эту проблему довольно грубо. Я прошу делать ревью для каждой части кода. Так я могу быть уверена, что к дедлайну все будет проверено.

5. Я не вижу для себя возможности развития

Процесс работы больше напоминает мне выживание, а не развитие. Когда я решаю небольшие проблемы, я учусь создавать патчи и работать по аналогии, и у меня нет менторов.

Эту проблему можно решить на уровне компании. Например, вы можете поговорить с руководством или найти работу, где профессиональному развитию разработчиков уделяется большее внимание. Но мне пришлось решать эту проблему самой.

Вам нужно улучшать эффективность и качество работы во время своего рабочего времени, а не на выходных или в свободное время. Также вам нужно создать глобальный план саморазвития. Если вы не можете работать над этим на рабочем месте, тратьте на это свободное время, но если ваши навыки не связаны с работой, они останутся исключительно теоретическими.

Я решила этот вопрос так: мне нужен ментор, чтобы улучшить эффективность работы. Ментор может взять ответственность за миссии по вашему саморазвитию, а коллеги — дать вам советы о том, как создать что-то, что будет работать.

Проблемы на уровне компании

Кажется, что некоторые компании превращают своих программистов в сотрудников конвейера. Они совершают простые процедуры, а их менеджеры думают, что эффективность можно улучшить при помощи расширения штата, а не посредством развития существующих сотрудников.

Я считаю, что любая компания по разработке должна уделять внимание этим вещам:

  • регулярное развитие сотрудников;
  • создание плана профессионального развития внутри компании для сотрудника и для работодателя, который будет относиться не только к продвижению по карьерной лестнице, но и к совершенствованию навыков;
  • распределение ответственности за проблемы в проекте.

Если эти вопросы не будут решаться, из компании уйдут разработчики, которые относятся к своей работе серьезно. Поэтому эффективность останется низкой независимо от количества сотрудников.

Иногда компании пытаются создать кадровый резерв, нанимая студентов. С одной стороны, научить проще людей, которые не были испорчены работой. С другой, студенты не могут быть структурой, формирующей основу компании. Как только соотношение разработчиков и студентов становится 50/50, все становится странным. В компании достаточное количество сотрудников, но часть работы всегда приходится переделывать, и разработчики не укладываются в дедлайн.

На вопрос о том, как стоит развивать своих сотрудников, нет однозначного ответа. Некоторые достигают отличных результатов при помощи общения с другими. Некоторые будут искать ответ сами, а некоторым проще заплатить и получить ответы от экспертов. Другие будут решать рабочие проблемы в свободное время. Ответ есть всегда, главное — быть заинтересованными в решении проблемы совместно с самими разработчиками.

 

Комментарии
Продолжить чтение

Обучение

Онлайн-курсы по криптовалютам и блокчейну

В этом списке собраны курсы по основным принципам работы блокчейна и криптовалют, размещенные на проверенных платформах онлайн-образования.

Анна Гуляева

Опубликовано

/

Несмотря на падение биткоина, количество каналов о криптовалютах и рекламы, связанной с заработком на криптобиржах, не уменьшается. Тем не менее, лежащие в основе технологии блокчейна интересуют и серьезные компании, желающие применять технологии децентрализации в хранении информации. В этом списке собраны курсы по основным принципам работы блокчейна и криптовалют, размещенные на проверенных платформах онлайн-образования.

Введение в блокчейн-технологии на базе платформы Ethereum

Бесплатный курс поделен на несколько разделов, посвященных как работе блокчейна в общем, так и конкретным особенностям платформы Ethereum и смарт-контрактов. На русском языке.

Decentralized Applications on Ethereum platform

Подробный курс, который охватывает темы от основ криптографии и блокчейна до децентрализованных приложений и продажи токенов.

Bitcoin and Cryptocurrency Technologies

Курс от Принстонского университета, в котором более подробно рассказывается конкретно о биткоине и его будущем, но также рассматриваются и вопросы использования криптовалюты в качестве платформы, а также правовая регуляция вопроса. Начинается 19 февраля.

Digital Transformation in Financial Services

Специализация из пяти курсов, посвященная развитию финтеха. Это полное изучение всех возможностей цифровых финансовых платформ, и при покупке специализации вы сможете создать свой проект по разработке стратегии цифровой трансформации для реально существующей компании. Курсы можно пройти и по отдельности. Начинается 19 февраля.

IBM Blockchain Foundation for Developers

Специальный курс от IBM, предназначенный для разработчиков, желающих работать с блокчейном. Для прохождения курса не требуются навыки программирования, но для некоторых разделов желательно знание JavaScript. Курс не раскрывает особенности работы платформы, поэтому перед его прохождением лучше ознакомиться с одним из курсов о теории блокчейна, представленных выше. Курс начался 12 февраля.

 

Комментарии
Продолжить чтение

Рекламные сети

Виды программатик-закупок

В сфере программатик выделяют 3 вида: через открытый аукцион (RTB), частные торговые площадки и прямые закупки через программатик-директ. BYYD рассказывает, чем они отличаются и в чем преимущество каждого.

BYYD

Опубликовано

/

Автор:

Аукцион в режиме реального времени

RTB — одна из концепций программатика, где закупка и продажа осуществляется в доли секунды, в среднем — 200 миллисекунд с того момента, как отправляется заявка на аукцион и до публикации рекламного объявления.

Для сравнения — глаз человека моргает за 300 миллисекунд.

Схема рекламного аукциона

Давайте включим воображение. Пользователь Х посещает мобильную страницу или приложение паблишера. Как только пользователь Х заходит на веб-страницу или в приложение, откуда передается заявка, передается заявка на аукцион. В заявке содержится уникальная информация о пользователе (тип устройства, IP-адрес, операционная система), и она становится доступной для участников аукциона.

Паблишеры открывают доступ к показам через биржи, которые затем подают сигнал всем рекламным поставщикам об открытии аукциона на показы. Рекламодатели используют DSP, чтобы получать информацию о пользователях мобильных сайтов или приложений и оценить, относится ли пользователь к их целевой аудитории. В зависимости от этого, рекламодатели покупают показы в режиме реального времени и могут управлять своими кампаниями, устанавливая стоимость ставки.

Как только ставка определена, DSP анализирует все текущие кампании рекламодателей и находит самую подходящую для пользователя. DSP от имени участников торгов делает ставку против других участников аукциона, и самая высокая получает право разместить рекламное объявление на странице мобильного сайта или в приложении.

Механизм ценообразования RTB: аукцион первой и второй цены

В отличие от традиционных моделей закупок рекламы, в RTB стоимость для каждого отдельного показа определяется в реальном времени. Для этого разработаны 2 механизма ценообразования: их называют аукционами первой и второй цены. Как правило, открытые аукционы работают по второй модели.

Аукцион первой цены

В этой системе побеждает тот, кто предлагает высокую цену. И по ней закрывается торг — такая система больше подходит для закрытого аукциона и при низком спросе, так как участники торгов не знают до последнего момента, являются ли их ставки конкурентоспособными.

Аукцион второй цены

В этой системе победителем становится участник торгов, который предложил самую высокую цену, но аукцион закрывается по второй самой высокой цене с плюсом комиссии (как правило, 1 цент).

В этом контексте стоит поговорить о понятиях предельных и не предельных нижних ценах. Первое — это минимальная цена, за которую паблишеры готовы предоставить рекламное место. Рекламодатели, которые предлагают цену ниже, не принимаются к участию в торгах.

При не предельной нижней цене у паблишера есть два варианта торгов. Если рекламодатели предлагают цены выше этой планки, то осуществляется аукцион второй цены. Если же предлагаемые цены ниже не предельной, то процесс осуществляется по аукциону первой цены: побеждает рекламодатель который предложил большую ставку, по которой и будет закупаться инвентарь.

Частные торговые площадки

Частные торговые площадки (PMP) — это площадки, доступные по приглашению. Используя их, паблишерам дается возможность «отложить» определенное количество рекламных мест и продавать его избранному покупателю или группе покупателей через частный аукцион, который проходит посредством Deal ID (уникального кода, который генерируется согласно оговоренным покупателем и продавцом условиям сделки).

Какие преимущества выделяют у частных торговых площадок?

  1. Для паблишеров — больше контроля в выборе покупателей.
  2. Для рекламодателей — возможность протестировать программатик в контролируемых условиях.
  3. Частные площадки— это промежуточная стадия между открытыми аукционами и прямыми сделками, подходят рекламодателям, которые хотят получить премиум-места до их появления в открытом доступе аукциона.

Интересный факт: по данным Emarketer расходы на виды закупок через частные площадки в 2016 году составили 3,31 млрд долларов. Причиной популярности назвали прозрачность доступного рекламного инвентаря и цен.

Как определить, подходит ли вам схема частных площадок? Попробуйте пройти этот краткий чек-лист.

  1. Оцените, подходит ли PMP для генерации требуемого ROI, сравнив потребности покупателей и целевой аудитории с возможностями паблишеров.
  2. После того, как выбрана частная торговая площадка, убедитесь, что покупатели и продавцы достали соглашения относительно мест, бюджета.
  3. Определите общие сложности, которые могут возникнуть при проведении кампании через частные площадки, если в предыдущем пункте возникли вопросы и недоговоренности.

Подобно аукционам первой и второй цены, у частных торговых площадок есть собственные схемы заключения сделки.

Предварительно согласованные сделки (привилегированные)

Закрытые торговые площадки работают с байерами по Deal ID, но его наличие не гарантирует победу на аукционе. В случае сделок, PMP-байер и продавец могут выбрать, воспользоваться ли им правом первого просмотра или первого отказа.

Право первого просмотра (first look) означает, что паблишеры могут дать байерам доступ к инвентарю до того, как начнётся открытый аукцион. Байеры первыми могут оценить премиум-инвентарь. Однако, это право может распространяться как на весь инвентарь, так на остаточные показы.

Право первого отказа — это согласованные требования, в которых рекламодатели имеют право дать своё первое слово относительно инвентаря, когда он становится доступным, и до того, как будет предложен другим.

Привилегированные сделки заключаются в частном порядке между одним байером и определённым продавцом по фиксированной, заранее согласованной, стоимости (как правило, это модель фиксированного CPM), до того, как инвентарь станет доступен для открытого аукциона.

Для паблишеров это означает более высокий доход от инвентаря. Байеры могут выбрать самую лучшую площадку для размещения, которая эффективно работает на ROI.

Закрытые аукционы

Это второй тип взаимодействия на частных площадках, в таких торгах участники могут быть только по приглашениям, паблишеры открывают доступ к не зарезервированным рекламным местам. Также как и открытые аукционы, они закрываются второй ценой для выигравшего участника торгов.

Паблишеры устанавливают минимальную цену для рекламодателей, которая позволяет небольшому количеству покупателей участвовать в закрытом аукционе. В случае закрытого PMP нижняя предельная цена выше, чем в открытом аукционе. Если никто не выкупил инвентарь, он идёт на открытый аукцион.

Programmatic Direct

Это третий способ закупок рекламы. С его помощью можно протестировать программатик технологии без потери прямого сотрудничества с паблишерами, к которым привыкли рекламодатели во времена «ручного» заключения сделок с долгими согласованиями и обсуждениями цены.

Программатик директ выбирают компании, которые хотят сфокусироваться на безопасности своего бренда и стремятся получить премиум-размещение на тех сайтах, которые сами выберут, и в приложениях паблишеров. Только с помощью прямых закупок рекламодатели могут найти желаемые рекламные площадки, на которых невозможно размещение рекламы через открытый аукцион.

В программатик директ закупки осуществляются 2-мя способами: гарантированные программатик закупки и автоматические закупки.

Гарантированные — рекламодатель и паблишер фиксируют условия сделки и связывают себя обязательствами по цене и объему мест. Таким образом, рекламодатели могут забронировать выбранные каналы, обеспечив необходимый объем размещений. Однако, гарантированное размещение часто ведет к увеличению цены, что негативно сказывается на показателе ROI для рекламодателя.

В автоматизированных (не зарезервнированных) покупках цена фиксирована, но количество уже не гарантировано. Полагаясь на протокол запроса заявок на ставки для совершения сделки, процесс проходит как на закрытых биржах, рекламодатели получают право первого просмотра и первого отказа. Deal ID создается для транзакции подобных запросов на ставки, которые соответствуют ранее освоенным между рекламодателем и паблишером условиям и стоимости —уникальным для каждого покупателя.

Итак, для кого подходит программатик директ? Для рекламодателей, которые заботятся о безопасности и репутации, а также для тех, кто заинтересован в конечных конверсионных действиях больше, чем в показах. В таких случаях программатик действительно будет работать на них.

В ближайшие несколько лет Emarketer прогнозирует увеличение количества сделок, совершённых через programmatic direct. Если в 2014 году доля сделок в США составляла около 8% всех затрат на программатик рекламу, то в 2016 году его доля увеличилась до 42%. Programmatic Direct оставляет все преимущества программатика, сохраняя возможность тесного взаимодействия паблишера и рекламодателя.

Сегодня мы разобрали три вида программатик закупок и схемы их действия. Платформа BYYD позволяет искать качественные рекламные места и взаимодействие рекламодателей и паблишеров по удобной схеме. Попробуйте!

Комментарии
Продолжить чтение

Постеры для разработчиков

Наша рассылка

Каждому подписавшемуся - "1 час на UI аудит": бесплатный ускоренный курс для разработчиков!

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.