Comments 19
Интересный подход, для изложения! Не останавливайтесь. Особенно любопытно, сможете ли вы таким же образом изложить основы тензорного анализа?
Спасибо за поддержку!
Думаю все возможно, но стоит ли оно того?
Все основы можно было изложить одной статьей в виде сухого сжатого материала. Тут же большая часть времени ушла на работу с его подачей.
К сожалению, пока моя работа не пользуется большим спросом.
Понимаю! Сам не скажу, что прямо завален отзывами на свои статьи. С другой стороны, у вас достаточно оригинальная идея, показать элементы линейной алгебры в разрезе сразу и практического применения для игростроя, так и как весьма упрощенной, но очень важной при этом для понимания некоторых основ для работы языковых моделей ИИ. Поэтому и любопытно было бы, как оно быдет продолжено в более сложных вариантах. Но - понимаю! Работа колосальная, а выхлоп - неизвестен.
Здравствуйте, а можно с вами как-нибудь связаться и написать пару вопросов по нейронным сетям? Я сам начинаю их изучать но пока у меня выходит не очень, да и проходить в вузе нейросети мы будем только в следующем семестре, поэтому заранее хочу изучить и попробовать себя в этом
Считайте, что уже связались.
Задавайте ваши вопросы. Я отвечу, если будет время.
Ну хорошо. Для начала опишу свою ситуацию: изучаю С++ и Питон пока знания на начальном уровне, но уже пишу некоторые проекты самостоятельно и подтягиваю знания по алгоритмам чтобы проходить успешно собеседования, также начинаю работать с коммитами крупных проектов, отправляя свои good first Issue(TensorRt-llm, DALI, onnxruntime, OpenVino, Varm, LLVM и другие). По нейросетям я делаю упор на решение различных problems или competition в основном в Кеггле, и недавно приметил для себя несколько проектов ( Ribonza-RNA folding, CRISP), (детекция и сегментация и поиск уязвимостей). И тут я столкнулся с проблемой что допустим немного не понимаю как допустим реализовать сложную ии модель путем объединения трансформеров и граф нейронных сетей(про их наличие я узнал случайно когда просил гпт дать ссылки на научные статьи), а также реализацией метрике от MSE/MSA до RMSD/TM-score. Можете ли вы порекомендовать что для начала взять чтобы отталкиваться от этого и самостоятельно решать задачи/писать проекты. Очень много информации и невозможно её нормально структурировать
В последнем предложении вы сами ответили на свой вопрос. Вы так много всего перечислили, особенно серьезных проектов. Зачем это, если нет даже знания языка?
Поэтому сначала нужно ответить на вопрос: "Для чего?", а уже потом "Как именно?". Дата-сайентист, дата-инженер, ML-инженер - это все разные специальности. Я сам занимаюсь чистыми исследованиями (data science) и из фреймворков знаю только TF/Keras.
Так что, совет простой: чем проще, тем лучше, а не наоборот. Начните с базы и сконцентрируйтесь на чем-то одном, максимум 2 вещах, если они работают параллельно. Иначе получится как с двумя зайцами.
Если это язык, то пусть для начала будет один Питон, поскольку именно на нем пишутся все скрипты. Параллельно можно будет изучать нейронные сети, начав, конечно же, с математики. Далее классическое ML (поверхностно), чтобы понять, как обучаются модели, что такое обобщающая способность, какие есть фундаментальные проблемы при обучении. Только потом нейронные сети. Это лучше, чем изучить 1000 крутых проектов, которые завтра устареют. А линейная алгебра и backprop не устареют никогда.
Простой вопрос, сможете вручную рассчитать прямой и обратный проход маленькой полносвязной сети из пары слоев по паре нейронов?
Ну я перечислил два направления в которых я развиваюсь в С++ (написание различных программ под Hardware) и Питон ( работа с нейронками). Вы как писали что нужно искать так чтобы одно другому не мешало, лично я исхожу из такого мнение, что сейчас очень много Hardware компаний выпускают различные проекты/библиотеки/кроссплатформенные фреймворки и тд.(например Daly, onnxruntime, OpenVino, Warp, Pytorch, TensorRt-llm and etc.) где так или иначе нужны будут знания по С++ и питону (например реализовать функции, библиотеки, модули все это протестировать и отладить) - поэтому на основе этого я делаю ставку на С++/Питон(ну и немного шарпов/реакта, для кросс мобильной разработки). По поводу незнания языка: соглашусь у меня есть с этим проблемы, но прилагаю усилия (пока трачу 1 час на написание кода и 2-3 часа теории от изучения языка до его паттернов + 1 час математики ). Но думаю увеличить темп чтобы уже уверенно и самостоятельно писать код. И вам огромное спасибо за советы а можете написать авторов и книги по линейной алгебре (можно даже и советских).
Честно рассчитать в уме пока не смогу но если допустим будет методичка с формулами (чтобы не запутаться) то да смогу).
По итогу: огромное спасибо вам за ОС(обратную связь) обязательно воспользуюсь вашими советами
Я хотел сказать, что учить несколько языков - это плохая затея. Вы упомянули фреймворки, мобильную разработку, C#, ML, С++, математику... По моему это уже много направлений, но дело ваше.
Если затрудняетесь со структурой, то приведу примерный план по шагам для параллельного изучения:
Направление 1: ЛА -> ML -> DL -> Специализация DL -> Типы архитектур -> фреймворки.
Направление 2: Python Begin (переменные, циклы, условия) -> процедурный Python (функции, специфические методы языка) -> начало ООП -> конкретные проекты и фреймворки.
То есть, сначала база, а потом остальное. Изучать проект без языка, это как хотеть стать гонщиком и не знать, что такое двигатель.
По поводу материалов:
Марк Лутц. "Учим Python, делая крутые игры". Легкое чтение для практики.
Эл Свейгарт. "Изучаем Python". Сложная книга, которую лучше использовать как мануал. Обращайтесь к ней по мере необходимости.
Рекомендую платформу CodinGame.
Youtube, ChatGPT и прочие инструменты в помощь.
Также рекомендую бегло посмотреть курс ITVDN C# Starter 2020. Автор: Александр Шевчук. Он не относится к Питону, но поможет понять азы программирования и отличие компилируемых языков. Так сказать, иной взгляд на проблему.
По ЛА любой учебник подойдет.
Видео 3Blue1Brown для интуитивного понимания.
Нейросети очень хорошо помогают, потому как в классической науке все однозначно.
По классике ML, рекомендую канал Andrey Sozykin.
Если когда-нибудь захотите серьезно изучать C#, то настоятельно рекомендую бесплатный курс от Ulearn.
С++ не изучал.
Перечисленного вам на годы хватит. Главное не торопиться и не отвлекаться на модные проекты, которые быстро устаревают. Их вы все равно на работе изучите по мере необходимости.
Статья/карма/подписка: +++. Сразу видно, когда пишет практик, а не "теоретик".
По мелочам:
-- по определению векторов - чтобы не напускать туману одним предложением можно было сказать что это математические объекты, которые по-разному определены в разных областях математики. Алгебраический вектор - многокомпонентная (или многоместная) конструкция образца (x,y,z), геометрический вектор - направленный отрезок. И над ними можно построить однозначные соответвия (в обе стороны :) ).
-- по геометрическому отображению можно было упомянуть, что прямоугольная система координат хороша тем, что на ней просто отрезками отобразить компоненты алгебраического вектора. Но это годится лишь для векторов местности не более 3, а дальше "ну... мы работаем по аналогии". И упомянуть удобство такого отображения независимых величин.
Из близких русской душе примеров приведу пример векторизации рассыпания пачки семок по независимым карманам: количество семок засыпанных в каждый карман - хорошо отображается на прямоугольных ортах*. Ну а сам геометрический вектор - это все заспанные семки. Кстати, персыпание семок из кармана в карман - вполне иллюстрирует закон сохранения энергии. (И тут же можно показать годограф вектора, рисующий в пространстве кривые в процессе этого пересыпания.)
-- всегда немного коробит уши когда слышишь от математиков (и упаси бог - инженеров) слово "сущность". Этому понятию, полне соответствует слово "объект" - предмет произвольной природы, у которого, вероятно, есть внутрення структура, о которой в данный момент мы просто не хотим говорить. "Сущности" расплодились среди "программистов", но я встречал их и во вполне добропорядочных ортодоксальных книгах по матетематике 1980-х. Полагаю "сущности" появились в результате неудачного перевода переводчиками английского слова entity, которым "у них" эти "сущности" и обозначаются. Но если заглянуть в словарь, то окажется, что слову entity вполне соответствут перевод "объект".
PS Давайте дружить на математической почве. Я собираю банду любителей математики (телеграм в профиле).
Спасибо за обратную связь!
По вашему стилю предположу, что вы, должно быть, преподаватель: они любят, чтобы все было строго и споры о том, какая книга каноничное и ближе к истине. Благо, я не математик, а всего лишь энтузиаст ;)
Не стал писать про систему координат, потому как собираюсь создать отдельную статью посвященную базису. По задумке, читатель-ученик, как бы еще принимает все как данность и не видит разницы и надобности в чем-то другом. Но в итоге именно этот момент с линейными операторами меняет все представление.
Что касается сущности. Я намеренно называл одно и то же разными словами. Цель: создать параллельную логическую связь между вектором (во всех его смыслах), строкой датасета, объектом класса и сущностью в самом широком смысле понятия, которой может быть все что угодно, поддающееся описанию. Как говорится, все есть информация, и все взаимосвязано.
Мне нужно чтобы читатель осознал, что вектор может описывать все: эмоции и болезни людей, тенденции экономики, состояния объектов, музыку, личность и все что угодно и даже больше. Это крайне абстрактно, но только это позволит понять нейронные сети.
P.S. Получилось у меня или нет, судить вам!
>>По вашему стилю предположу, что вы, должно быть, преподаватель...
Предположение неверно. Любитель (я ж так и написал). Но не только математики, но немного и языка на котором говорил бессмертный Гоголь ... и Белинский. Отсюда и стремление к его точности.
>>они любят, чтобы все было строго и споры о том, какая книга каноничное и ближе к истине
Если послушать средней руки "преподавателя" математики, то тезис "они любят, чтобы все было строго" - не выдеривает никакой критики. Обычно там борщ в речах и бардачок в голове. А вот "споры о том, какая книга каноничное и ближе к истине" - они действительно любят. Особенно в оплачиваемое из бюджета время. Оно и не удивительно: солдат спит, служба - идёт.
>>что вектор может описывать все: эмоции и болезни людей, тенденции экономики, состояния объектов, музыку, личность и все что угодно и даже больше
Ойли. Эта тема - предмет начал математики. А насколько Вы в них сильны?
>> только это позволит понять нейронные сети
"Понять нейронные сети" - тут ничего не понял. Да и понимать, обоснованно полагаю, ничего и не нужно: в мире достаточно прекрасных курсов, где всё объяснено "на пальцах"; ясно и в страницы текста. Было бы желание и трудолюбие. К примеру, рекомендую взглянуть на эти курсы от того же автора*. Что ещё нужно?
https://qudata.com/ml/ru/index.html - сам предмет
https://synset.com/ - хорошая подготовка к предмету для школьников 7 класс+.
PS И почему "только это"? Позволю себе поразглагольствовать на тему. Чтобы "понимать" нейросети нужно "немного" понимать и физику, и философию. Нет?
На картинках векторного произведения надо бы проверить направление результата
Векторные произведения концепт чисто геометрический, и вне собственно геометрических задач смысла особо не имеет. Поэтому, учитывая упор на анализ данных, как, было бы лучше вообще не рассказывать про векторное произведение. Пример крайне притянутым за уши выглядит...
Линейная алгебра для нейросетей: векторы на практике