Введение в искусственный интеллект
331 subscribers
63 photos
2 videos
170 links
Просто об искусственном интеллекте и его возможностях. Помогу разобраться в базовых понятиях и создать собственную нейросеть. Рассказываю, что у ИИ под кожей.
Елена Михалькова
Download Telegram
Дорогие подпИИсчики! Если вы здесь, значит, вы знаете, кто я (Елена Михалькова, преподаватель, работала в ТюмГУ и Европейском университете в Санкт-Петербурге). А если всё-таки не знаете и попали сюда через поиск в тг, то читайте описание канала. Ну или если вам лень искать описание канала, то вот же оно:
«А, нет, я вас обманула. Это не оно.»
Вы все ещё здесь? Ну лан, тогда начнём. Конечно, опять издалека. Итак, если вы хотите постичь азы ИИ (AI) вроде как хобби, но мало ли.. вдруг пригодится, и спрашиваете своих знакомых, которые трудятся в этой области, «А че почитать? Ну типа основные какие-нибудь труды по ИИ», и знакомые отвечают вам: «Ой, ну вот такое-то, только отстань», то... (Да, уже пора было закончить предыдущее предложение.) То вот вам материалы к моим курсам. Особенно, если вы - мои студенты и хотите больше, чем мы успеваем за пару.
Что здесь есть и еще будет?
Разбор базовой терминологии - это #база
Ссылки на допматериалы #чепочитать #чепосмотреть
Кейсы и мои петпроекты, связанные с ИИ #иипетпроект
Мои скромные мыслишки #эссеиистика
Списки годноты про ИИ #спискии
Байки про ИИ, юмор #байкиизсклепа
Ноутбуки с кодом #notebook
Посты с карточками - когда без визуала никак #карточкИИ
Лайфхаки, связанные с использованием ИИ #лайфхакИИ
Я не только компьютерный лингвист, но ещё и хороший тамада. И конкурсы у меня интересные. И мероприятия #конкурс #меропрИИятия
А еще недавно я запустила подкаст "А смысл?", где ИТ-специалисты и ученые а-а-асмысляют место ИИ в современном мире. #асмысл
Внимание! В моих постах есть НЕмат (что-то типо слэнг, но мата нет). Если это оскорбляет вашу персону, то лучше дальше этого поста не читать.
18+
Контакты: если есть вопросы, предложения.. заметили ошибку? Пишите на evrog2009@gmail.com - там быстрее увижу.
Этот пост будет обновляться. Ну, а пока, рада встрече с вами! ❤️ И да пребудет с нами Скайнет!
🔥71
Введение в искусственный интеллект pinned «Дорогие подпИИсчики! Если вы здесь, значит, вы знаете, кто я (Елена Михалькова, преподаватель, работала в ТюмГУ и Европейском университете в Санкт-Петербурге). А если всё-таки не знаете и попали сюда через поиск в тг, то читайте описание канала. Ну или если…»
Ну и в догонку к первому посту - начну с разбора термина ИИ (сиречь AI). Конечно, есть же статья на Википедии, озаглавленная «ИИ». Но мало кто помнит, как менялось содержание этой статьи последние лет 15. В далекие нулевые ИИёй называли класс задач и методов их решения (solutions), которые заменяли человека при принятии решений (decisions, decision-making). Вот, положим, есть у вас робот, который дергает рубильник. Это ещё не ИИ. Вы сами решаете, когда включить робота и сколько раз и с какой силой он будет дергать рубильник. А вот когда вы изучили себя и поняли, что в определённых условиях вы включали, выключали и перенастраивали робота, а затем создали программу, которая стала командовать роботом вместо вас - вот это уже ИИ. А ваш робот стал smart (или умным, интеллектуальным).
А что поменялось за 15 лет на Википедии? Там как шла дискуссия о том, что такое ИИ, так она по сей день и идёт. Например, русскоязычная статья подчёркивает, что ИИ выполняет творческие функции, а англоязычная уходит в перечисление индустриальных направлений, где ИИ заменяет человека.
Ну и у меня готово первое задание на почитать: зайдите в Википедию, найдите историю редактирования статьи об ИИ на русском и английском и проведите собственное журналистское расследование: что же на ваш взгляд осталось неизменным сквозь года и языки? (У меня есть свой ответ на этот философский вопрос, но я приберегу его для следующего поста.)

#база #эссеиистика
🔥3
Что нужно начинающему ИИшнику?

Конечно, освоить самый великий язык программирования на свете - Питон (он же Python).
Почему он? Потому что на нем есть много высококачественных халявных тьюториалов (вот как этот мой канал) и облачных сервисов для быстрого старта.
Но питонов много.. Какой брать? Сейчас (as of 21 June 2023) все активно переходят на тридесятую версию, выпущенную в 2021. Уже появилась 3.11 и она смело заявляет, что на 10-60% быстрее тридесятой. В общем, если вы решили ставить Питон и работать локально (выполнять код на своем компе), то не опускайтесь ниже Python 3.10. А в облачных сервисах обычно стоит самая проверенная и актуальная версия.
Где лучше кодить? О том, как и куда ставить Питон, у меня будет отдельный пост. Тем, кто вкатывается в айти, рекомендую все-таки не париться с установками, а воспользоваться облачными версиями, чтобы сначала освоиться с довольно простыми азами кодинга. (Иными словами: Внимание! Во время установки питона может так подгореть, что вы просто бросите все, толком не вкусив мэджика от возможностей, которые дает современное программирование.)
На какое облачко лучше сесть? Ну, конечно, Google Colaboratory. И пусть они мне ничего не заплатили за этот пост, лучшей альтернативы имхо пока нет. Знакомиться с колабом надо тут.
А какой тьюториал по питону посоветуете? Ну, конечно, Django-girls! Самое важное: не надо ставить все, что они там просят, к себе на комп. И Django пока не берите. Возьмите именно вот этот один тьюториал "Введение в Python" и прогоните его в гугл-колабе. Время освоения: 1-2 вечера посидеть.
И напоследок, если вы все это умеете, то вот вам простенькая нейронка в колабе с разбором азов машин лернинга. Читайте описание, жмякайте треугольничек, и волшебная среда Jupyter сама все сделает. Рекомендую, прежде чем запускать, залить файл себе на гуглодиск.

аза
5🔥1
Продолжу тему: что такое ИИ? (философский длиннопост)
Если вы почитали Википедию, как я советовала ранее, то у вас уже точно есть собственное уверенное представление об этом вопросе. (Да, я реально считаю, что Википедии достаточно для азов.) Мое экспертное мнение, скорее всего, с вашим пересечется, но лишь частично. The truth is out there.
Мое вхождение в ИИ началось с проекта по комьютерному юмору: мне захотелось создать собственную систему распознавания юмора, основанную на концепции инвективных имен. Эту концепцию я предложила в кандидатской диссертации. Оказалось, что распознавание юмора - это так называемая ИИ-полная (AI-complete) задача. За этим термином кроется сосуществование в представлениях об ИИ двух противоположностей: "ИИ может обладать сознанием, как человек", и "ИИ только делает вид, имитирует сознание". Всем известный тест Тьюринга должен показать, что сознание есть. И, наоборот, логический эксперимент Китайская комната поддерживает теорию имитации.
Так вот с точки зрения полного ИИ (aka сильного, hard) распознавать юмор он сможет, когда станет "действительно мыслящим" - как человек.
В моем недавнем примере с рубильником вместо машины можно представить и человека, который делает монотонную, рутинную работу. О таком человеке, скорее всего, скажут, что он низко-квалифицирован и вообще туповат для более интеллектуальных задач. При этом, чем больше он ошибается, становится нерутинным - недостаточно монотонно дергает рубильник, тем хуже получается результат. И беднягу будут сильнее ругать за тупизну. А вот его начальник, который решает, сколько раз и в каких случаях дергать рубильник, считается уважаемым человеком, экспертом в заводских делах.
Таким образом, умная машина - это та, которая выходит за рамки рутины, но не как-то случайно, а так, что это приводит к улучшению результата. The better the result, the smarter the machine.
Программу, которая распознает юмор, я в итоге написала. Она это делает не идеально (есть более сильные конкуренты), но вполне себе наравне с не-в-совершенстве-говорящими-на-английском людьми. Да и проект все еще развивается - думаю, мы сможем лучше. Главное тут то, что мне не нужна действительно думающая машина для решения очень трудных экспертных задач. Но сама разработка алгоритма дала мне очень много для понимания природы юмора.
Некоторые современные программы типа ChatGPT позволяют измерить свой IQ. По разным оценкам он уже выше 120. Привет, Элджернон!

#база
#иипетпроект
🔥41
Написав прошлый пост, я подумала, что интеллектуальность ИИ можно оценить ещё и через сравнение с поведением человека по отношению к окружающей среде. Условно можно разделить это поведение на три типа (я с этим делением столкнулась на каком-то тренинге от нашего hr-отдела; откуда у него ноги растут, не знаю, но оно реально щас хорошо все проиллюстрирует):
- консервативное среда меняется, но я буду дергать рубильник как мои деды сто лет назад
- реактивное среда поменялась, надо подстроиться (и в воздухе переобуться; эйчары, кстати, это хорошо умеют)
- проактивное неизвестно, как там поменяется среда завтра; попробую уже сейчас сколотить себе бункер со всеми удобствами, чтобы меня это задело по минимуму.
Консервативная машина только и умеет, что дергать рубильник. Умная подстраивается под меняющийся мир с его растущими запросами. Проактивная плюнет на это дело, положит людей в капсулы и будет использовать как батарейки.
3
ДорогИИе подписчики! Пока идёт лето и контент-план на академический год ещё не готов, позвольте представить вам своего соавтора и админа этого канала: Артём Пищулин - студент направления «Информационные системы и технологии», в ближайшем будущем преподаватель, интересуется анализом данных и связкой данных с ИИ. В этом канале будет помогать писать посты и мониторить маты, если вдруг вы затеете дискуссию ;) А мне маты можно? Пока не решила.
(Артём говорит, что подключит бота, который будет искать маты вместо него. Ждём!)
Ну а вот так мы выглядим в повседневной жизни.
👍71🔥1
Сентябрь горит, убийца плачет, календарь перевернуть мы не успели, зато у нас готов контент-план на месяц, уииии! План такой:

Сентябрь 2023
14 Бинарная классификация
17 А кто такие фиксики компьютерные лингвисты?
19 Anaconda - фу (на самом деле нет)
21 Линейная регрессия
24 Популярные каналы про ИИ
26 10 советов как достичь SOTA
28 Что такое NLP? (И как не путать его с НЛП и НЛО)

И сегодня по просьбе Артема, которому надо сделать домашку по бинарной классификации (да, этот пост “заказной”, но админов тоже надо кормить), разжевываю именно эту тему.
Начну с главного слова в теме: классификация - почему это про ИИ? Искусственный интеллект принято определять как класс задач, в которых автомат может заменить человека без потери эффективности. Классификация, наряду с кластеризацией и прогнозированием, это одна из таких типичнейших задач, где ИИ активно применяется. Кроме того, с нее удобно начинать обучение. Задача классификации ставится так: есть объекты нескольких классов (про них мы уже знаем, что они принадлежат именно этим классам) и есть признаки этих объектов (длина, ширина, вкус, цвет..); а теперь надо на основании того, что нам известно об объектах классов, классифицировать новые объекты, при условии, что мы у них те же самые признаки померяли. Пример: есть три класса ирисов (цветочки такие) - Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис разноцветный (Iris versicolor). (Кто ж их так назвал то?) У них есть 4 признака: длина и ширина чашелистика (вот-зе-хелл-из-зыс?) и длина и ширина лепестка (ну это более-менее понятно). Берем по 40 экземпляров каждого класса и обучаем ИИчко, а затем на еще 10 проверяем, насколько хорошо оно обучилось. Как проверить, хорошо ли, это тема отдельного номера нашего замечательного журнала. А пока попробуем просто понять: вот у нас (40+10)*3=150 ирисов - этого вообще достаточно, чтобы создать хороший классификатор? Зависит от задачи. С датасета ирисов Фишера, про который был мой пример, началось широкое шагание ИИ по миру. Этот маленький датасет и простенький к нему алгоритм линейной регрессии дают понимание, как легко, за считанные доли секунд ИИ может решить задачу, для которой потребовались бы часы ручного труда.
Классификация ирисов по трем классам называется multiclass (многоклассовой). Если класса два, то классификация binary (бинарная). На практике мультиклассовая классификация часто сводится именно к задаче бинарного по-классового сравнения (этот или этот? - ну, скорее, этот.. - ок, тогда этот или вот этот?..).
Завершаю пост традиционным колаб-ноутбуком. Прожимайте треугольнички и классифицируйте. А на подумать: разберитесь, что в моем ноутбуке изображено на картинке и что за scikit-learn такой, зачем он все еще нужен, когда есть всякие пайторчи и керастензорфлоу.

#база
#notebook
👍31
А кто такие Фиксики компьютерные лингвисты?
Придирчивый читатель, наверно, спросит, есть ли смысл описывать компьютерных лингвистов, не рассказав о том, что такое компьютерная лингвистика (computer/computational linguistics, CL). А смысл я в этом вижу такой: через рассказ о профессии я попробую донести, что такое, с моей точки зрения, есть сегодня компьютерная лингвистика. Мой рассказ основан исключительно на собственном опыте и опыте людей, которых я знаю или читаю в блогах про ИИ. Вот только я не уверена, что компьютерный лингвист - это именно профессия.
CL появилась недавно; люди, которые ее двигают, это ученые, исследователи по призванию, а на деле они работают преподавателями, сотрудниками лабораторий, ИТ-девелоперами или вообще не работают, а учатся. Итак, есть две большие сферы, где люди могут быть компьютерными лингвистами: academia и industry, но работают они там не (или не совсем) лингвистами. А если человек представляется как «компьютерный лингвист», то его понимают, скорее, так: «На работе я вынужден делать всякие обязанности типа вести пары, рецензировать статьи для журналов и параллельно могу решать задачи обработки естественного языка и/или публиковать статьи по CL. Возможно, в универе/лабе/компании больше никого, кроме меня, не нашлось, чтобы этим заниматься. Когда у меня получается что-то действительно значимое, то… хм.. в моих должностных обязанностях ничего не меняется, но я могу устроиться в вуз или компанию получше, т.к. у меня в анамнезе появляется успешный кейс внедрения или статья в сборнике Ассоциации компьютерной лингвистики (ACL)». Ну и, конечно, поиск по хх.ру тоже не даёт вакансий для «компьютерного лингвиста». При этом из каждого утюга слышится, как важна CL сегодня и как она улучшает производительность труда. В чем же дело? Вроде все просто: наймите сотрудников и пусть они вам внедрят чат-боты, умный поиск и прочее. На практике, если технология успешно внедрена, то для ее поддержки компьютерный лингвист не особо нужен. Держать лингвиста на целую ставку не требуется. В науке, если закончился грант, где были задачи в области CL, лингвист становится просто преподавателем или исследователем без гранта и, вполне вероятно, следующий его проект будет вообще не по CL - смотря, что подвернётся. Больше всего шансов, что вы будете заниматься CL профессионально, ИМХО, в крупных компаниях типа FANG, где есть отделы для научных исследований, ресеча (research). Они могут себе позволить такую роскошь. Потому что, как проходит день, если вы компьютерный лингвист? Вы много сидите и думаете, возможно, даже читаете, а потом пишете один абзац в статью. Или вы очень много плохо кодите, так что тру разрабы ужасаются или громко смеются. И главное, совершенно непонятно, как это оценить в зарплате.
Итак, CL - это молодая область науки на стыке ИТ и лингвистики, в которой, по моему мнению, очень много интересного, но совершенно непонятно, что из этого будет полезно. Поэтому ни рынок, ни наука пока не могут сформулировать четкие требования к профессии компьютерного лингвиста. Реально какие-то Фиксики получаются: их как бы нет, но кто-то их иногда видит и даже с ними разговаривает. Так что, если вы решили освоить CL как профессию, то будьте готовы, что это просто один из навыков, который, если вам повезёт, вы будете как можно чаще использовать в работе.

#эссеиистика
🫡1
Anaconda фу?
Недавно в одном из чатов, где много студентов-ойтишнегов мы, точнее я, с ними сцепились на тему, нужно ли ставить Анаконду, если пишешь диплом по ИИ. Я считаю, что нужно, если вы любите упрощать сложное там, где это возможно.
Anaconda - это коллекция популярных инструментов для data science (анализа данных) и с недавних пор облачный сервис. Я пользуюсь ею локально: устанавливаю программный пакет даже на ноутбук, т.к. занимает он немного и производительность у него высокая, и пишу код в среде разработки Jupyter (Юпитер) или в PyCharm (Пайчарм). Иногда залажу в R. Никакими другими средами разработки я больше не пользуюсь вот уже много лет. Ведь у меня есть Анаконда, а у нее есть интерфейс для доступа к этим инструментам. Благодаря поддержке своих разработчиков, обновляет она все сама, без конфликтов между версиями инструментов. И вообще реально делает датасаенс проще. На моем личном опыте я узнала про это вот так.
Давным-давно я очень мучилась, ставя библиотеки для Питона на Виндовс. И Виндовс тоже мучился, ведь он не создан для разработки. Проблемы вылазили на каждом шагу. Вводишь в терминале pip install (или pip2? или pip3?) и молишься, чтобы прокатило. Anaconda имеет файлик установки как для Виндовс, так и для Макоси. Жмяк в юзер-френдли интерфейсе на кнопочку Install, и все происходит. Ну, правда, не всегда совсем все и сразу. Например, я не смогла сейчас поставить Анаконду для юзера, чье имя пользователя написано кириллицей. Пришлось ставить ее для всех пользователей в папку C:/Program Files. Но мы ж справились 😊
Пользователи Линукса, как никто другой, знают, как важно иногда переустанавливать ОС. Вот переустановил ты Линукс и, считай, весь твой Питон со всеми библиотеками, которые работали без конфликтов друг с другом и со своими версиями, слетел. Надо ставить все заново. А тут открываешь Анаконду, а в ней уже большинство библиотек есть. Мне, например, постоянно нужны pandas, matplotlib, SpaCy, NLTK, Scikit-learn, Keras. Поставил, открыл, пользуешься. Никаких тебе “sudo apt-get install”, “откати к другой версии питона”, ”системные рекваерменты не удовлетворены”... (Да, иногда есть траблы, например, с настройкой версии Питона, но это уже тонкая материя не для начинающих, а для прохаванных датасаентистов. Которые не одну змею съели и даже не две.)
Мой главный вывод: подводных тупо меньше, чем если ставить все, что есть в Анаконде по отдельности. Так что, на самом деле, не “фу”, а “фууух, спасибо, что делаешь жизнь проще”. Вот тут перечислено, что есть в бесплатной версии Анаконды. Установочка для виндовс тут (не забудьте про кириллицу).
ПС. У Анаконды есть платная версия, в которой ИИ помогает разрабу писать код. И это не реклама. Никто не стал бы мне платить за пост в канале, где меньше ста человек 😁

#эссеиистика
🔥4👍2
А Артем делится с вами красивой картинкой линейной регрессии, которую только что сделал в Jupyter
👨‍💻3
Линейная регрессия без формул
В посте про бинарную классификацию я говорила о том, что хорошо, когда классы, представленные в виде массива (множества, скопления) точек, ну к примеру, в двумерном пространстве, линейно разделимы. Вот у этих ирисов длина и ширина лепестка меньше стольки-то миллиметров, а вот у этих больше. То есть между двумя скоплениями точек можно провести линию, которая отделяет два класса. Но когда мы с вами строили линейную регрессию в колабе, то там принцип был несколько иной. Линия была не разграничителем, а трендом, который проходил максимально близко ко всем точкам массива данных. В какой-то момент этот тренд (прямая линия) был ближе к классу 0, а потом приблизился к классу 1. Смысл регрессии, как статистического метода, в том, чтобы предсказать, куда примерно будет двигаться, направляться массив точек в многомерном пространстве. Нужно это для того, чтобы, например, предсказать, как пойдут дела у новых точек, которые мы еще не померяли. Или определить к какому классу линия тренда ближе в данной конкретной точке. Вот этот второй кейс и используется в классификации при помощи линейной регрессии.
Как построить этот тренд? Повторю: в основе концепции лежит представление о том, что тренд - это прямая линия, которая наиболее близка всем точкам заданного массива. Если у нас будет всего одна точка, то тут тренда особо не построишь. Через эту точку можно провести бесконечное количество прямых. Если есть две точки, то прямая пройдет ровно через них. А вот если три и более, то существует только одна такая прямая, расстояние до которой стремится к минимуму (..если точки не образуют симметричный многогранник, но для статистических данных из полей, где цветут ирисы, это прям очень маловероятно). См. пикчу над этим постом. Метод поиска такой прямой (да и кривой тоже, если мы решим искать нелинейный тренд, например, параболу) называется метод наименьших квадратов. Почему квадраты? При вычислении, если от точки на линии тренда отнимать расстояние до точки, которая лежит выше нее, то получится отрицательное число. В итоге часть расстояний будут положительными, а часть отрицательными - непорядок; они ж друг друга аннигилируют. Поэтому расстояния берутся в квадрат.
Что важно понимать про прямую?
🥇 То, что уравнение прямой (y=k*x+b обещала же без формул, а это что??) характеризуется двумя параметрами:
наклон прямой (k - coefficient)..
🤸‍♀️и ее сдвиг относительно оси Y в точке 0 (b - intercept; насколько выше или ниже нуля прямая пересекает ось Y).
🥈 И то, что сумма расстояний от этой прямой до каждой точки массива стремится к минимуму.
Задача минимизации расстояний для двумерного массива (у класса есть только один признак) решается при помощи дифференциальных уравнений в частных производных (страшно, очень страшно..🙀). Производная равна нулю в точках минимума и максимума. В нашем случае есть только минимум (одна прямая с минимальным расстоянием до точек). Дифференцируем сначала по k, потом по b (или наоборот, кому как хочется). Составляем систему из двух уравнений и находим сначала k, а потом b (или наоборот). Если же массив трех- и более -мерный, то придется дифференцировать матрицы. Там тоже не очень сложно, но раздел науки, который этим занимается - линейная алгебра (в народе линал) - в школе не изучают (по крайней мере пока), поэтому, если вы зашли в ИИ из гуманитарных дисциплин, то этот материал придется осваивать самостоятельно. Либо воспользоваться готовыми формулами в экселе или питоне. Ну, по крайней мере, вы теперь понимаете, почему машобуч и линал ходят рука об руку.
Я начала было рисовать красивый колаб-ноутбук с формулами, чтобы проиллюстрировать вычисление уравнения линейной регрессии, но меня позвали на квиз. Отдыхать тоже надо. Поэтому ноутбук выйдет отдельным постом.

#база
🔥6
Мы тут по контент-плану немного не вписались в график. В воскресенье должен был выйти пост "Популярные каналы про ИИ", но он не вышел, т.к. пришлось писать план для магистратуры по ИИ в гуманитарных науках, которую мы очень стараемся открыть через год в СоцГуме. Зато у меня готов ноутбук с регрессией. Надеюсь, он прояснит, как она работает. Не забывайте сохранить его к себе на гуглодиск. Ну и пикча в тему.
Всем гуд найт! Не работайте по ночам. Говорят, это вредно.😇 🥱

#notebook
3