Введение в искусственный интеллект
331 subscribers
63 photos
2 videos
170 links
Просто об искусственном интеллекте и его возможностях. Помогу разобраться в базовых понятиях и создать собственную нейросеть. Рассказываю, что у ИИ под кожей.
Елена Михалькова
Download Telegram
Итак, ставшие традиционными воскресные кружочки! Первый пошел..🚀
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Дисклеймер: Мы имели в виду не "естественную обработку языков", а "обработку естественных языков" 🤪
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
И еще немного научного стендапа 😊
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🕊2
Ну хоть кто-то знает. За знаниями обращаться в Технопарк
This media is not supported in your browser
VIEW IN TELEGRAM
Последний на сегодня 😉 мы успели поймать немного солнечных лучей на улице 🌞
This media is not supported in your browser
VIEW IN TELEGRAM
Дорогие подписчики, на самом деле, в этих кружочках я хотела познакомить вас с Артемом, вторым админом канала. Хотя, наверно, многие из вас его знают. И он не глокая куздра, если что 😁 Тогда что же такое глокая куздра?
Есть несколько фраз, которые обязательно должен знать компьютерный лингвист, чтобы сойти за своего:
👹 “Гло́кая ку́здра ште́ко будлану́ла бо́кра и курдя́чит бокрёнка” - эту фразу придумал советский лингвист Лев Щерба. Она показывает, что даже если вы не знаете смысл слов в предложении, но при этом предложение построено грамматически правильно, то общий смысл фразы вам будет понятен. Читая ее, вы, скорее всего, представите каких-то фантастических существ, которые то ли дерутся, то ли играют. Похожий пример есть в книге американского лингвиста Ноама Хомского “Синтаксическая структура”: 💚 “Colorless green ideas sleep furiously” (“Бесцветные зелёные идеи спят яростно”). Тут у слов есть понятное лексическое значение, но смысл фразы можно трактовать по-разному или сводить к абсурду.
🏢“Джорджтаунский эксперимент”. В 1950-е лингвисты верили, что они сейчас вот-вот создадут программу для автоматического перевода, и профессия переводчика просто вымрет. Профессия переводчика не совсем чтобы вымерла даже сейчас, но специалистов и правда требуется значительно меньше. Однако технологии машинного перевода, которые к этому привели, появились только в нулевые. А в Джорджтаунском эксперименте в 1954 г. ученые показали на примере 60 предложений, каким может быть машинный перевод. То ли они выбрали удачные предложения, то ли подделали результат. В общем в 50-е было рано радоваться.
🌐“Сферический конь в вакууме”. Вообще это не чисто лингвистическая тема. И это даже не всегда конь, а еще корова и курица. Выражение пошло от шутки, что ученые в своих моделях любят все сильно упрощать. Так что в реальности такие ситуации, которые описаны в научных работах, даже и не встретятся. Лингвисты упоминают сферического коня, например, говоря о том, что скрупулезное описание правил языка оторвано от реальности живой человеческой речи и мало общего с ней имеет. Чем хорошо машинное обучение: ему правила не нужны - оно автоматически выучивает правила из множества лингвистических данных. 🏆

#байкиизсклепа #спискии
👍42
Устанавливаем размерность данных без линейки и рулетки: часть 1
Дисклеймер: Внимание! В этом посте очень много букаф. Автор выражает сожаление, но автор просто не смог сделать покороче и разбил пост на два.
Начну с традиционного вопроса: а зачем? Самый широкий ответ на этот вопрос будет: чтобы правильно подготовить данные для ИИ-алгоритма. Пишу все это по собственному опыту. А опыт подсказывает, что самые крупные слезы, которые льются дольше всего, бывают не когда строишь архитектуру нейронной сети, а когда уже вот-вот, вроде бы все сделал, запустил и.. бац, ошибка - что-то типа “Вы пихаете мне какую-то лютую фигню, уберите, есть не буду”. Проходит час.. Два.. За окном стемнело.. В сумерках раздается вой собаки.. А, это же мой вой..
Понимать размерность данных нужно, чтобы корректно подавать их ИИ-алгоритму. Для этого первым делом надо выяснить, как распаковались ваши данные и чтО просит та реализация ИИ-алгоритма, которую вы взяли (после того как вы сначала попробовали пихнуть данные как есть, на удачу). Лучше всего решать этот вопрос через ознакомление с наглядным примером, похожим кейсом. Программные библиотеки для ИИ часто содержат examples (примеры), templates (шаблоны), tutorials (тьюториалз), guides (гайды) и прочий материал для контрол-цэ контрол-вэ. Но если их не нашлось, то есть же великий и могучий StackOverflow (стЕк оверфлОу) - породитель копипасты для 99.99% кода в мире. Это вопросно-ответная платформа для ИТ-девелоперов. Вот бы посмотреть, сколько кода со стековерфлоу живет в реальных программах, которыми мы пользуемся каждый день.
Если не помог шаблон и стековерфлоу, то осталась последняя надежда: “Читай чертову документацию!” Фраза не универсальная. Я читаю документацию в том случае, если больше ничего не сработало. Потому что, если разраб не напрягся сделать хороший пример или шаблон, то и документацию он, скорее всего, написал сухо и непонятно. Писать документацию - это, кстати, может быть рутиной для ИТ-девелопера. Две строчки кода и к ним гайд на 40 страниц - вполне себе реальность.

#база
👍3
Устанавливаем размерность данных без линейки и рулетки: часть 2
Ну и я как обычно отвлеклась. Так что же такое размерность данных? Давайте поговорим об ирисах. Помните великий датасет из трех видов ирисов? Там у каждого цветочка померяли 4 признака. Мы можем взять какой-то самый показательный признак, по которому ирисы будет легко поделить на три класса (линейная разделимость классов): у первого вида ширина лепестка находится в таком-то диапазоне, у второго - в таком-то, у третьего - в таком-то. Но в большинстве задач, которые подбрасывает нам реальный мир, линейная разделимость нам только снится. Для достижения большей точности приходится брать больше признаков, например, все четыре. Мой опыт подсказывает, что ИИ чаще всего любит кушать двумерные массивы. Представляем себе систему координат из X и Y. Иксами будут четыре признака ирисов (x1, x2, x3, x4), игреками - порядковый номер ириса (первый ирис, второй, третий… стопятидесятый).
x1 x2 x3 x4
y1 5.1 3.5 1.4 0.2
y2 4.9 3.0 1.4 0.2
Ось Y в таком случае будет считаться индексом (index) массива данных. Индекс - это список названий рядов. По дефолту обычно ось Y идет под номером 0, то есть, чтобы, например, вычислить среднее значение по столбцу, то есть получить игрек среднее (!), надо указать axis=0.
Ось X - это вектора наших ирисов, которые можно представить как точки в многомерном пространстве. Говоря о линейной корреляции, мы рисовали их в двумерном пространстве - за основу брали x1 и x2. Получалось два скопления точек, которые демонстрировали линейную разделимость классов. Важно, что каждый икс - это конкретный признак. Поэтому иксы нельзя менять местами, например, ранжировать. Ось X обычно в библиотеках работы с данными идет под номером 1.
С ирисами, надеюсь, понятно. В классификатор, например, линейную регрессию пихаем двумерный массив. А как быть с картинкой из датасета MNIST? Картинка уже сама по себе двумерная: 28 на 28 пикселей. Добавляем третью ось - индекс - и получим трехмерный массив. А если бы картинка была цветная в палитре RGB, то добавилась бы еще одна ось из трех признаков, и массив стал бы четырехмерным. Следовательно, задача у нас - “уплостить” массив, переделать в двухмерный, уменьшить размерность. Помогает понимание формы массива (shape). Пусть индексом остается порядковый номер картинки с числом. А иксом станет результат конкатенации, последовательного сшивания всех рядов двухмерной картинки в один длинный вектор. То есть мы изменяем размерность нашего вектора - решейпим его (reshape).
Как всегда вот вам ноутбучек с наглядной демонстрацией происходящего, а меня ждет второй литр кофе!

#база #notebook
4❤‍🔥1👍1💋1
Энтропия в теории информации
Пишу этот пост в ожидании второй серии второго сезона “Локи”.
В этот раз начну с вопроса “Почему?” Потому что после линейной регрессии надо переходить к логистической, а там есть логарифмы и мера кросс-энтропии, а в энтропии тоже есть один логарифм. Так что вот заодно и вспомню, что такое логарифм.
Но если более серьезно отнестись к этому вопросу, то потому что в NLP меру энтропии часто используют для описания лингвистических данных. Например, при помощи энтропии можно вычислять устойчивые словосочетания. А еще она часто встречается в машобуче. Языковые модели, которые порождают текст, можно оценить с точки зрения того, насколько предсказуемый результат они дали. От человека в диалоге мы ожидаем, что он и останется в рамках привычного (на вопрос “как дела?” мы ждем что-то вроде “норм” или “ок” или “хорошо”), и что-то новое нам скажет. Иначе, если речь абсолютно предсказуема, то и говорить было незачем.
Итак, энтропия - это некая мера. Она оценивает, сколько новой информации можно получить от источника. (Я сейчас именно об энтропии в теории информации пишу. Физику - она там тоже есть - не рассматриваем.) Вот предположим у нас есть человек, который говорит только “норм”. Какой вопрос ему не задай, получишь один и тот же ответ. Вероятность получить “норм” равна 1, а энтропия равна 0, т.к. новой информации ноль.
Допустим, человек выучил еще один ответ: “все плохо”. Если он будет в половине случаев говорить “норм”, а в другой “все плохо”, то вероятность получить либо то, либо то будет ½. Ответы - это несовместные события. Они образуют полную группу, т.е. других вариантов ответа нет. Сумма их вероятностей равна 1. Можем ли мы угадать ответ? Будем угадывать в 50% случаев - если будем случайно предполагать, “норм “ или нет. Причем сначала у нас не будет ровно 50% попаданий, но со временем мы все ближе будем приближаться к этой цифре. Вот это типичный случай, когда энтропия равна 1. То есть система ведет себя абсолютно непредсказуемо. Сплошной хаос.
А теперь будет немного головоломки: предположим, наш человек вдруг влюбился и теперь в 70% случаев говорит, что у него все норм - он просто посчастливел процентов эдак на 30 - стал ли он при этом более предсказуем? Чтобы оценить это, давайте научимся считать энтропию. Сначала посчитаем вероятность первого ответа: p = 0.7. Умножим ее на логарифм этой вероятности по основанию 2: log(p). Получилось ~-0.52. Сделаем то же самое со вторым ответом, вероятность которого 0.3. Получаем ~-0.36. Суммируем: ~-0.88. Умножим на -1, чтобы попасть в диапазон от 0 до 1. В итоге мы получили ~0.88 - неопределенность системы уменьшилась, т.к. один из двух ответов мы стали получать чаще. Энтропия падает. От любви в человеке снизился хаос, и он постепенно превращается в робота. Уиии!
В расчетах, которые мы произвели, есть тонкость: во-первых, берется логарифм по основанию 2; во-вторых, результат умножается на -1. Это для того, чтобы энтропия попала в диапазон от 0 до 1. В этот раз демонстрация не в ноутбуке, а в гугл-таблице. Ну и если хотите узнать об энтропии в физике, то мне понравился вот этот пост от хабровчанина.
Всех с наступившей пятницей, 13е! Где моя бензопила? 🤔

#база
3👌1
Внимание, конкурс!
Начну опять издалека. У меня сегодня не осталось сил на кружочек, поэтому я решила поизучать вопрос, почему у логарифма в энтропии основание = 2. Я пошарила в тырнете и нашла много ответов про то, что так сложилось исторически (тут и тут, например). Когда я делала таблицу для расчета энтропии в гугл-таблицах для системы из двух несовместных событий (два ответа: "норм" и "все плохо"), при расчете p*log2(p) для вероятностей с шагом 0.1 (0.1, 0.2, 03...) получалось, что для вероятности 0.5 половина энтропии будет равна тоже 0.5. И это ложится в концепцию. Но потом я на втором листе сделала то же самое для p*log10(p) (то есть взяла основание логарифма: 10), и получилось, что энтропия будет равна 1 только для вероятности.. догадайтесь.. 0.1 (т.е. 1/10). Делаем то же для log5(p) - получаем 0.2. У меня в табличке получается, что основание для логарифма для системы из N несовместных событий должно быть равно количеству этих событий (N), чтобы энтропия была равна 1, когда они равновероятны. См. второй лист моей гуглотаблички. И поскольку со мной не согласен Интернет (ну или я что-то напутала в расчетах энтропии), то я объявляю конкурс: кто разрешит эту загадку, получит от меня бумажный приз - эль книго. Я, правда, пока не знаю, какое, но точно новое, в обложке. Важный критерий: ответ нужно разжевать простым русским языком и добавить расчеты в гуглотабличу для наглядности!
Си ю туморроу (в кружочке)! 🥱

#база
👍2
Forwarded from Elena Mikhalkova
This media is not supported in your browser
VIEW IN TELEGRAM
👍4🔥3❤‍🔥1🤯1
Так кто же такой Томаш Миколов?
Странно, вроде бы, за ответами на такие вопросы надо идти в Википедию. Но статья про Томаша Миколова в Википедии очень кратко описывает его достижения, ограничиваясь тем, что он создал word2vec и был команде разработчиков fastText. А ведь он потом еще создал doc2vec!..
В общем давным-давно, когда люди прозябали без нормальных алгоритмов понимания человеческой речи компьютером, Томаш Миколов опубликовал статью “Эффективная оценка репрезентаций слов в векторном пространстве”. В этой статье он с соавторами описал алгоритм векторной репрезентации семантики слов: великий и прекрасный word2vec. Что умеет word2vec:
- Он может самостоятельно определить, к чему Лондон относится так же, как Москва к России.
- Он знает, что “королева - женщина = король”.
- Он понимает, что хомяки и суслики по смыслу ближе друг к другу, чем хомяки и алгебра.
- Он видит, что в начале 20 века у слов “красные”, “белые” и “зеленые” возникли новые значения.
- Он точно знает, чему равен косинус угла между томатом и философией (--0.001, кстати, по НКРЯ и Википедии - слова пишите через пробел).
Если бы не word2vec, не было бы и таких крутых языковых моделей, типа ChatGPT. Т.к. именно от этого алгоритма пошло широкое шагание по миру алгоритмов, которые выучивают смысл слова через его соседей в большом множестве текстов. А алгоритм doc2vec позволяет векторизовать смысл не только отдельных слов, но и целых текстов.
Кстати, это именно Томаш был на обложке нашего октябрьского анонса.🦸‍♂️
3
🥱 Логистическая регрессия
Опять пишу пост за полночь 🌙 А дело в том, что тема, казавшаяся достаточной для одного поста, оказалась гораздо более обширной. Итак, кратко про логистическую регрессию.
Во-первых, зачем?
Во-первых-первых, для классификации. Самый простой и быстрый способ после линейной регрессии. Но зачастую более эффективный. Линейная регрессия находит такое уравнение прямой, при котором эта прямая наиболее близко проходит ко всем точкам массива. Логистическая вместо прямой использует сигмоиду - функцию, график которой напоминает латинскую S. На деле такая форма лучше приближает значения массива, ближе проходит к заданным точкам и, следовательно, меньше ошибается - если у массива точек есть ядро, где их много и они тесно сидят рядом, в отличии от периферии на границе классов.
Во-первых-вторых, логрег - это самая простая однослойная нейронная сеть. По сути глубокие сети - это слои таких вот разных классификаторов, которые пережевывают и выплевывают результат следующему слою.
Во-вторых, чем она отличается от линейной?
Я, конечно, создала ноутбучек, чтобы проиллюстрировать, чем. Но вкратце: это надстройка над идеей линейной регрессии. Да, звучит странно, но это именно такая вот модификация линрега при помощи дополнительных расчетов. В ней тоже есть минимизация ошибки - минимизация расстояний от реальных точек массива до линии регрессии. Только в отличие от линрега в логреге линия - кривая, в форме буквы S. Как и у линрега, здесь тоже есть коэффициенты k и b, которые определяют положение линии регрессии в многомерном пространстве. Они называются w - как weights, веса, и b, который почему-то расшифровывают как bias.
💫
Без знакомства с логистической регрессией к нейронным сетям приступать противопоказано. Это база. Ну и как всегда я сделала ноутбучек с кодом. В нем подробно расписана внутрянка logreg vulgaris - обычной логистической регрессии без лишних наворотов.

#база #notebook
🙏2
💐5 датасетов, о которых вы должны знать

Внимательный читатель, наверно, заметил, что я пропустила четверговый пост. А все потому, что у нас с товарищами горел дедлайн по статье. Если вам интересно узнать побольше о проектах, которые я сейчас делаю, то вот тут есть мое интервью. А ещё, прежде чем я перейду к теме поста 😊, у меня два анонса на завтра:
1. Я уже записала кружочек на завтра. Со мной будет Гузель Чапарова, руководитель магистратуры про ИИ и не только в Передовой инженерной школе ТюмГУ.
2. Для тех, кто не успевает читать мои посты и учиться искусственному интеллекту, но хочет это делать... Барабанная дробь... 4 и 5 ноября (да, там типо праздники) я проведу в СоцГуме два оффлайн интенсива: основы Питона и основы машинного обучения. Официальное объявление с формой регистрации скину завтра.

Ну а теперь про датасеты. Для начала, что такое датасет? Этот термин возник в машинном обучении. Так называют набор размеченных данных, который используют для обучения и тестировании модели машинного обучения с целью выполнить какую-нибудь экспертную задачу, например, определить номера машин на фото или продать гараж. Размеченные данные - это когда у всех или некоторых элементов датасета есть метка, например "рост", "вес", "длина чашелистика", "корневая морфема" и т.п. Часто датасет делят на три части:
- train (тренировочный, для непосредственно обучения)
- dev (developer, "разработчиковый", для промежуточного тестирования во время обучения)
- test (тестовый, чтобы проверить модель после обучения)
Некоторые датасеты прославились тем, что сделали известными какие-то алгоритмы, которые быстро и эффективно решали задачу.
5️⃣ Номер пять в нашем списке датасет sales.csv из Google Colaboratory. Для тех, кто почему-то еще не подключал Google Диск к своему коду, колаб подготовил файл с данными о продажах домов. Бери и запускай нейросеть out of the box - реально удобно!
4️⃣ HAHA - датасет испаноязычных твитов, которые содержат и не содержат юмор. В мире он не сильно известен, но я мучаю им своих студентов, когда обучаю их NLP 😈. Просто на испанском мало кто из студентов говорит, но при этом берешь готовые инструменты и получаешь решение. И так можно с любым в мире языком. Границ нет!
3️⃣ Данные пассажиров с Титаника, включая, кто из них выжил. По выражению одного хабровчанина "это самое разбираемое и описываемое задание с Kaggle для новичков" (на Кегле его и ищите). Я тут поспорю, т.к. есть ещё номер один из нашего списка, но о нем позже. Про Титаник скажу, что да, если начали шатать машобуч, берите смело.
2️⃣ MNIST: 60К картинок размерностью 28 на 28 пикселей, на которых изображены рукописные цифры от 0 до 9. С ними прославился Ян Лекун и машинное зрение при помощи глубоких нейросетей.
1️⃣ Ну и конечно, номер один в моем списке - великие и ужасные ирисы Фишера. Надеюсь, вы их уже запомнили и пересчитали. Как я люблю говорить, с них началось шагание ИИ по миру.

Всем счастливого машобуча и увидимся завтра! 👋

#база #спискии
👍3