самое печальное что данный сектор предполагает хорошее мат. образование, и полное знание околопредметных областей (как правильно сказали на какой-то англо конференции "программисты математики снова стали востребованными"), но туда лезут вчерашние студенты которые кое как закончили вчера универ на троечку, и в принципе они могли стать хорошими кодерами. Но, нет, посмотрев пару видео лекций они уже мнят себе экспертами, и самое обидное их принимают..
Ничего обидного. Рынок рассудит. Сколько их липовых дизайнеров/3дшников/фотографов/фронтендеров/геймразработчиков было ;) остаются единицы, остальные валят в новые темы ))
На пикабу не мало таких советов.
Я бы даже сказал, безудержного хвастовства. Читаешь пост о том, какие у людей малые зарплаты, и тут выскакивает один и начинает, что вот он добился, что надо изучать и что вообще не тем вы занимаетесь.
Надо мол приложить усилия и изучить. А кто не могут - сами виноваты.
Я спрашиваю у одного, а как быть тем, кому математика не дается? Кто туго соображает, не вообще а в математике?
Вот я например такой. Им что, всем умереть теперь, не полноценным? Иль прозябать в забвении и нищете?
А он мне говорит, что математика в программировании вообще не нужна. Мол, это вообще ни к чему и можно обойтись. Я сильно подивился, ведь ранее я думал, что программист, он как и математик. Сидит, скрипит мозгами и что то там считает. Ну, по крайней мере так похоже.
Неужто ошибался, думал я?
А выходит, что математика нужна. И тот товарищ был не прав и вводил меня в заблуждение.
Так вот бывает.
Есть ссферы где это необходимо, конечно, но 99 вакансий из 100 это не требуют.
Оставшийся процент да, это то что вы написали. Но этим занимаются разработчики сред разработки. Это элита и их мало. Я про них отдельно указал в комментариях.
Но насчёт типовых тормозов, Вы правы, чертовски правы... И, что самое плохое, при отсутствии грамотного DBA траблшутинг этого превращается в кошмар.
То, что вы назвали -- матанализ.
Программистам же нужна дискретная математика. И вот тут уже не все так однозначно.
Опять же, дискретная математика уровня вузов современному программисту тоже не требуется. Современные языки и фреймворки всё упростили до уровня уметь в простую логику не/и/или и комбинировать эти значения. Опять же, я беру по массе. Ну то есть всех сферических программистов. Понятно, что если ты программируешь микропроцессор под ЧПУ, или работаешь с огромным массивом данных, типа антивируса, то без математики никуда. Но сайтоделатели, телефоноприложения, всякого рода системы учета этого не требуют. А 95% рынка именно это и есть программисты.
а мог бы просто x/42 и все, и в продакшн.
Всё так, поправка лишь на то куда вы как программист метите.
Вот например статья от ux инженера гугла где нужно уметь всё нисмотря на фреймворки(их кстати тоже люди пишут).
https://medium.com/google-design/google-photos-45b714dfbed1
вычисление сдвигов в энтерпрайзе используется чуть менее чем нигде. булева алгебра -- хоспади, что её учить, она интуитивно понятна. оценка быстродействия -- вычислить O довольно несложно, да и нужно даааалеко не везде, в современном мире проблемы ресурсов решаются методами вида "Петрович, поднеси ещё ведро оперативки в датацентр, у нас пустой нод джиес проект деплоится". 20 мегабайт нод модулей в пустом проекте никого не удивляет
Матан сейчас нужен в крайне ограниченных сферах:
1)Биг дата
2)Нейронки и ML(и то иногда условно)
3)не помешает в геймдеве, прикинуть коллизии обьектов например
4)научный софт
5)эмбеддед
У нас это 250 гигов данных в день, которые обрабатываются Spark, в процессе используются HDFS/HBase/Cassandra
тем паче. мало работал в этой области, но где работал -- ребята отчаянно юзали матан. ну, точнее вышмат в виде теории чисел, комбинаторику и теорвер, и вроде даже теорию игр
Я бы сказал, что сколько то серьезная математика уровня выше 5 класса школы почти нигде не требуется.
Булева алгебра - это опять же слово страшное, а на деле используются очень примитивные конструкции, вроде "если выполнилось одно из условий - делай то то" или "если выполнились все условия - тогда делай что то еще".
for(){
switch(){
Case 1:
Foreach{
While
}
}И тд. Лень с телефона бить без табулатуры
Поясните что вы имеете ввиду? А то любой школьник поймет как сделать каждый из этих элементов
Если пишешь что-то для большого бизнеса и без тонких оптимизаций. Математика и образование это большой плюс, но не обязательно. Я булевой алгеброй пользовался лишь на уровне логических «и» и «или». Гораздо сложнее уместить в голову какие-то базовые библиотеки и правила написания хорошего кода. Вот они важны.
Модные тенденции фронтэнда, на которые больше заказов?
Кстати, интересно, что популярнее сейчас cms или код с библиотеками js?
различные cms популярны на фрилансе и в мелких конторах типа "сайт за 30 минут". Не советую туда лезть - высокая конкуренция, относительно низкие зарплаты, неприменимый опыт в том смысле, что такого программиста только переучивать, больше ни на что не годится.
В крупных компаниях конечно востребован js и фреймворки типа angular/react/vue, но это не значит, что ими все ограничивается. Http, веб сервисы, rest и собственно все, что связано с вебом типа css, html, flex, less/sass и много чего, что мелкое но блин надо. И конечно не забываем базу - ооп, паттерны, бест практики к написанию кода и качество кода в целом. Надо знать методологии разработки, как проходит разработка в целом, валидация кода, проверка функционала, доставка до заказчика. Но это если мы говорим о действительно качественном процессе и серьезных компаниях, а не гаражных стартапах и различный "рога и копыта".
Ага, есть у нас такой юайщик - экономист блоховуза, древовидный селектор не может запилить.
Не говоря уж о том, что во фронтенде необходимы ротейты всякие и транспонирование матриц.
это так, просто ремарка, на правах "разрешите доебаться"
За быстродействие могу пояснить, в джаве это делается двумя строчками и нет там математики. Хотя есть инструменты для слежки за памятью, ни разу не видел чтобы этим кто-то занимался.
Булева алгебра, ну я ни разу не использовал формулы сокращения. Да это и усложнило бы понимание кода другим.
Оценку работоспособности делает заказчик. Его устраивает, значит работоспособно. И уж точно он это делает без знаний математики.
товарищ выше писал о профилировании приложения, выявлении узких мест, выявлении утечек:
Да даже при профилировании памяти, оценки быстродействия, оценки достаточной робастности системы.
далее вы пишите:
За быстродействие могу пояснить, в джаве это делается двумя строчками и нет там математики.
и.. скидываете ссылку на счетчик посещаемости сайта.
вы это серьезно или такой лютый троллинг?
До этого работал инженером-программистом в области ЦОС. Согласен, заставить понимать процессор теорию вероятности не самая простая штука, однако редко пользовался вычислениями сложнее "степень двойки".
Я честно не думал в таком контексте. У меня есть маленькая - маленькая программа, которая по сути обёртка над exel. И там есть по сути только простые условные операторы, так что я не назвал бы это булевой алгеброй
Ну действительно, математика далеко не всегда нужна. Часто реализации сложных алгоритмов доступны в виде простых в использовании модулей/пакетов, чтобы их использовать не нужно знать деталей реализации.
Чтобы писать на каком-нибудь функциональном языке не обязательно глубоко разбираться в лямбда-исчислении. Кстати хороший пример - посмотри статью на википедии, там объяснение с математической точки зрения. Если бы я с этого начинал, то "пошел бы в проститутки", а если с реальных примеров, то довольно быстро становится понятно зачем это и как работает.
Насчет необходимости математики - фронтендерам вроде особо не нужна, на уровне школы все. Но все равно нужна логика, элементарная геометрия, и везде нужно сидеть и разбираться часами.
Чтобы стать крутым программистом нужно иметь особый склад характера, если его нет, то лучше вон бизнес открыть.
Начинать надо с того, что выяснить, есть способности к этому или нет.
А уж потом упираться рогами в эту область. В психологии это называется " ошибка выжившего".
Те, кто смогли, ошибочно считают, что так могут все. А все так не могут, нет способностей и склада ума.
Но денег хочется всегда.
Тебе не хватает тренировок, вот и всё. Способу мышления можно научиться. Мозг, знаешь ли, на самом деле очень универсальная штука и выполняя определённую работу, он к ней привыкает и адаптируется, начиная выполнять её лучше. Просто на это нужны усилия. Математик может стать писателем, писатель научится думать как инженер, если понадобится.
Но ты, конечно, можешь использовать как оправдание то, что тебе "не дано". В этом нет ничего постыдного, в конце-концов не всегда нам действительно нужно исполнение наших желаний и не часто мы к ним готовы. Но денег тебе за это не заплатят, а лёгкий путь посоветовать вряд ли кто сможет
Можешь ещё попробовать улучшить работу мозга за счёт грамотной "эксплуатации".
К примеру, пить больше воды (именно воды). Утром, днём, вечером. Мозг очень зависит от воды и даже фактически неощутимое в целом обезвоживание сказывается на способности думать, да и в целом на состоянии организма - устаёшь быстрее. По крайней мере, я разницу чувствую.
Кроме того, лишний раз стоит напомнить о необходимости хорошего сна, первое что страдает от его недостатка - концентрация и интеллект.
А ещё хоть какая-то физическая активность. Даже двадцать минут прогулки в день пару раз в неделю помогут меньше уставать и лучше соображать. Кроме того, когда гуляешь, обычно ты наедине с собой и думать проще.
Или можешь заморочиться и попробовать хоть как-то медитировать. Медитация в переводе - размышление. Фактически, это простое размышление и есть, тебе не надо морочиться с какими-то мантрами, лотосами и мулахандрами. Достаточно лишь того, что ты уделяешь внимание своим мыслям. А потом уже сам начнёшь чувствовать, что так думать как-то сподручнее. По моему субъективному ощущению (не искал пока инфы по медитациям), небольшой такой "разгруз" мне помогает решать сложные задачи не по моему профилю в течении пары дней.
Больше по этому поводу ничего простого не знаю. Разве что слышал про влиянии определённых витаминов.
Сам только начинаю разбираться в анатомии мозга
Чушь какая. Если нет способностей, то вы не научитесь рисовать или петь, если нет слуха.
Нет, научиться то можно, но это будет коряво и через жопу. Не лучше ли заниматься тем, к чему есть способности?
Стоит заметить, что если у вас нет предрасположенности к математике - вы конечно её освоите на каком то уровне, но изучение будет доставлять вам страдания.
То, что я с предрасположенностью к точным наукам изучу легко и с удовольствием, другой человек будет вымучивать со слезами и страданиями.
И вот тут очень легко по своей мерке оценить и сказать: ну я же математику знаю, так что же тебе то оказалось лень её выучить? Хотя может быть мне на это изучение потребовалось на порядок меньше сил.
Я не одобряю совета идти в айти повально всем, но научиться можно. Вопрос во времени и учителе. Смысла постигать основы программирования, если они не даются, целый год нет. А вот в качестве хобби, научиться петь или рисовать можно. Главное, чтобы на учителя денег хватило.
Петь - да, для этого конкретный орган - связки нужны.
А ввот в рисовании... Всегда же есть векторная графика, там даже прямую линию проводить не надо мочь и вполне обходишься без прямых рук. А все корявости справятся до бесконечности при желании.
Заниматься к чему есть способности нужно - но речь шла от деньгах.
Вот я например такой. Им что, всем умереть теперь, не полноценным? Иль прозябать в забвении и нищете?
Ну, примерно так работает теория эволюции.
Вы считаете, что богатые люди потому, что они логикой владеют хорошо и способностями программиста или вообще интеллект у них высокий?
Ой, вы ошибаетесь.
У меня тут есть мысль свой бизнес скромный расширить. Рассматриваю предложение открыть точку по скупке чермета. Когда я прикинул прибыль, у меня глазоньки на лоб полезли, какое нахер программирование принесет такие деньги? Я смотрел зарплаты программистов.Правда там придется отстегивать конкретным пацанам, но все равно лакомый кусок.
И что, для этого дохуя ума надо? Вот я из богатых людей в нашем районе никого не могу назвать интеллектуалом. Да быдло в основном. Но быдло ездит на крутых иномарках и мозг себе не сушит обучением.
Вот вам и эволюция.
на фриланс сейчас ищут не только в IT, а много кого и зарплаты вполне нормальные получаются для тех же мелких городов, получать 20-30к все же лучше чем 10-15 ходя на работу
ищут и художников, и копирайтеров, и продажников, переводчиков, рекламщиков. кого только не ищут. можно хоть оператором в такси пойти и получать неплохую зп для своего села.
сейчас время другое, многие уходят в онлайн, в удаленку, просто нужно поискать и посмотреть удаленные вакансии на hh или в чатах в телеге. что то хорошее найдется
Да у нас в классе может пару человек в математике шарили а остальные туповаты в этой области.
И как бы я не скрипел мозгом, математику мне не постичь. Так зачем всем раздавать такие дебильные советы - идите мол в программисты? Нужно же предупредить, что если с математикой хорошо, тогда вам туда.
А если не очень, то и нечего соваться.
Ну ты даешь, на базаре не все вышмат знают. В ип главный аналитик - это бухгалтер - она считает расход/доход, оптимизацию налогов, кассовые разрывы и пр.
Но очень, очень точно.
Уж здесь то я не ошибусь. Арифметика! Царица наук!
А учитывая, что заказы дорогостоящие и покупают не так часто, то считать приходится редко. Но большие суммы. А для налоговой декларацию я уж сам заполняю. Там не сложно.
там в основном нужна не матиматика, а логика. Математика нужна в определенных сферах и задачах
Математика действительно не везде нужна, но если тебе совсем не даёться математика, то скорее всего ты не достигнешь успеха в алгоритмах. Но, если сильно захотеть, то можно сайты создавать или быть 1С-ником, там матёша особо не нужна.
математика в программировании вообще не нужна
Смотря какая, их много разных : та же мат. логика то же является разделом математики, а без нее программировать практически не возможно.
Я под свои услуги вообще сайт сам делал на бесплатном конструкторе. Там только даун не разберется.
На нетхаусе делал и отлично работает. Даже в топ поиска яндекса по уникальным запросам вышел. В первую десятку по нашему району.
Нормальный сайт, приносит заказы.
Но это же не программирование о котором тут говорят и которое приносит хотя бы две штуки баксов в месяц? Я так понял, что программирование, это когда сам программы пишешь.
Ребята вы не совсем правильно понимаете значение математики для программиста. Даже если математика вам не пригодилась в работе программистом это не значит что она не сыграла (играет) определенную роль в вашем образе мышления. Так или иначе математика прежде всего развивает технический слад ума и технические специальности даются легче с развитыми математическими навыками. Соответственно такой специалист гораздо эффективнее разбирается в прикладных задачах.
Резюме: программисту математика нужна, как минимум поставить мозг на прямые рельсы.
Да ерунда действительно!
Учим английский , потом html, css, js, angular , react, vue и все!
Ващще как два пальца! Спасибо братан, сейчас пойду учить. Мужикам надо рассказать легкий способ разбогатеть. Они то не знают как все просто. ( на уровень 2к можно выйти за пол года, если кроссовками торговать в проходном месте на крупном рынке и мозг себе не разрушать)
8 лет сидеть в джунах? Да уж, ценный кадр, за такого надо хвататься всеми руками (сарказм). У вас благотворительная организация, что вы готовы платить какому-то уличному кадру зарплату за то, чтобы переучить его к примеру с бекэнда на фронтенд вместо того, чтобы уже готового спеца нанять с опытом работы?
Сколько было, почти столько и остается. :) Говнофотографы, с липовыми легендами и наградами, в тусовочке таких же, поддерживающие и хвалящие друг друга, прекрасно создают экосистему, где распиаренные говноделы зарабатывают больше реальных талантов. :) Потому что наглость и самоуверенность очень часто подменяют талант, а софт и современная техника помогает делать картинки яркими и броскими, чего большинству достаточно. Напор, пафос и реклама - залог успеха. :)
Дизайнеры и тридешники тож самое, в конце-концов, кому-то же нужно делать российский кинематограф. Геймдизайнеры успешные коммерчески в большинстве своем - копипастеры трендовых игр, особенно на рынке игр для мобильных устройств: достаточно поменять сеттинг игры, передрав механики из пары-тройки топовых проектов, и у тебя "свой" продукт, который, опять-таки усилиями команды маркетологов и покупкой закачек, выводится в топ маркета на сутки и дальше сам зарабатывает бабло. Но, в отличие от говнофотографов, тут хотя бы большие деньги вливать нужно.
Рынок, на самом деле, "рассуживает" только то, кто там будет зарабатывать, а качество продукта - вторичное.
Если человек имеет скиллы для работы с кино (любым) - это уже специалист, который развивался не один год. Не та тема в которой на понтах можно выехать.
Если человек вышел в топ плеймаркета, он состоялся в индустрии, либо сам либо как руководитель команды... независимо с копией он туда вышел или со своим продуктом.
Тут вы как раз привели примеры дюдей, которые состоялись как специалисты.
Это только по тем темам - в которых разбираюсь и которые меня кормят, с осталным, возможно кто-то дополнит.
В топ плеймаркета можно вывести любое говно, это я вам говорю как человек, знакомый с этим изнутри. :)
Платите бабки - будет вам топ. У большинства разработчиков задача не в том, чтобы сделать супер-продукт, а в том, чтобы сделать что-то более-менее играбельное и внешне привлекательное, вывести в топ и окупить за то время, что он будет болтаться там на волне "закачек с первой страницы". Потому так много однотипных проектов везде.
А что до кино, вы его немножко идеализируете. Смотрите уровень спецэффектов в российском кино, потом бюджеты, потом при желании поищите корни этих эффектов и съемок. Там найдутся шаблонные эффекты из Афтерэффектс, которые не самый тупой школьник по видеоурокам с торрентов сделает за время между домашними заданиями и футболом во дворе, а эпичные съемки оказываются футажами со стоков, ценником 100-200 долларов. А сценарист вообще за еду работал, между парами по вышке и сопромату.
Конечно, если ты работаешь в команде разработчиков, чьи игры издает какие-нибудь EA, то там требования к специалистам другие и знания и навыки другие (и то не всегда), и если ты снимаешь фильмы, пусть даже попсовые, но которые без искусственных мер собирают кинотеатры все свое время показа, являясь частью франшизы, которая на одном мерче собирает ВВП небольшой банановой республики, то там тоже стараются не брать людей с улицы и Сыновей Главного. И даже если берут, функции у них такие, что это не влияет на качество финального продукта в худшую сторону.
Но в целом эта индустрия - как любые другие, с одинаковыми проблемами, саязанными с человеческим фактором, в плане обязанностей, квалификации, справедливой оплаты труда и оценки вклада в проект, дележом доходов среди верхушки и прочих, идентичных что для кино-театра-оперы, что для общепита.
Ок опустим 3д - не ваша тема, вижу.
Ну вот другой пример.
Вы работаете в сфере "изнутри" и знаете, как и почем вывести игру в топ. Вы хотите сказать, что человек кторый может так же, как вы - проходимец в геймдеве, типа меня, который с уникальным контентом не смог из жопы рейтинга вылезти и заработал с проекта всего пару штук баксов и те, на продаже его механики, а не копий?
Да нифига. Это уже готовый состоявшийся специалист. Это не проходимец, который знает два скрипта и что-то читал про сео.
И он задержится на рынке а не свалит в поиск более выгодной темы или не вернется туда откуда начинал. Рынок купит его.
Вы идеалистически теоретизируете, по типу того, как должно было быть при социализме: "От каждого по его способностям, каждому - по его труду", только это даже тогда не работало. :) Для начала поищите статистику по стартапам разработчиков - сколько брались, сколько смогли закончить, сколько хотя бы окупились, а сколько смогли заработать и закрепиться. А заодно поглядите, сколько замечательных студий, создавших вечные шедевры игростроя, уже исчезли в никуда.
А я вам говорю, как оно работает, вот в чем разница. Давайте оставим бессмысленную демагогию, пока вы хотя бы не наберетесь немного опыта в областях, о которых рассуждаете. Ведь все участники диалога должны иметь опыт в области темы беседы, иначе это пьяные кухонные посиделки о мировой политике выходят, это пустая трата времени.
не знаю тему, со спецами перечисленных нет-нет приходится по работе пересекаться, ну и с 3д сам работаю... но уверен джунов с понтами лида, в бэкэнде тоже хватает.
Меня сейчас огорчает, что я закончил универ двадцать лет назад. Максимум, что там изучали, это Паскаль.
А дальше по жизни программирование очень маленькое хобби. Скрипт какой написать, ардуину прошить.
А сейчас стоит задача решить систему уравнений, в которой количество неизвестных больше количества уравнений. при этом не факт, что она решается, но надо найти максимально близкое решение.
Мне подсказали про целевую функцию и метод наименьших квадратов. Но как к этой срани подступиться, я даже не представляю.
Система решается не в виде Ax=b, а в виде |Ax-b|->min. Вторая задача для сводится к такому выражению: A*Ax = A*b, где A* - эрмитово-сопряженная матрица. В случае если у тебя числа рациональные только (не комплексные), то A* это транспонированная матрица A просто.
На питоне есть np.linalg.lstsq, это итерационная решалка такого выражение. Еще есть подход создания псевдообратной матрицы, иногда его называют аналитическим. Это можно через разложение Холецкого сделать, например.
Так же здесь очень часто вспоминают регуляризацию, потом уже разберешься с ней, мне не кажется что у тебя данные такие, что ее надо вот прямо сразу....
На питоне можешь. В качестве "максимально близкого решения" тут такое решение, когда сумма квадратов корней минимальна.
import numpy as np
# Матрица коэффиентов
a = np.array([[1, 2, 3], [4, 5, 6]])
# Столбец свободных членов
b = np.array([7, 8])
# Проверяем на наличие решений
if np.linalg.matrix_rank(a) == np.linalg.matrix_rank(np.column_stack((a, b))):
# Находим решение
x = np.linalg.lstsq(a, b, rcond=-1)[0]
print(x)
# Проверяем
print(np.dot(a, x))
> Мне подсказали про целевую функцию и метод наименьших квадратов.
На этих фразах поймал флешбеки из далекого прошлого ... вот за два дня до экзамена читаю конспекты ... светлая аудитория летом и все тихо сидят с листочками ... вытягиваю самый сложный билет из списка (когда разобрал все, кроме этого, единственная зазубренная формула на всякий случай - все равно не попадется, теория вероятностей на моей стороне, думал я)
Но, к сожалению, метод наименьших квадратов не вспомнил :)
Как нам однажды сказал преподаватель на лекции, мы учим не для того, чтобы всё это помнить, а для того чтоб открыть книжку и "вспомнить", если понадобится.
Что значит "найти максимально близкое решение"? Если система несовместная, она и не решится.
У него неизвестных больше, чем уравнений, какие основания считать систему несовместной?
И даже если система несовместная, её все равно можно решить в смысле "найти максимально близкое решение". На линале вам должны были рассказывать про регуляризацию Тихонова, например. В численном анализе данных для этого есть множество способов получить псевдообратную матрицу.
Я же не говорю что такая система обязательно не решается, а спрашиваю в случае если она не решается, что значит найти максимально близкое решение.
не факт, что она решается, но надо найти максимально близкое решение
Я уже ответил на ваш вопрос. Применяется регуляризация. Например, вместо несуществующей обратной матрицы используется псевдообратная. Какая конкретно регуляризация используется зависит от того, в какой метрике считается близость.
Если данных много (системы гигантские), не только для регуляризации, но и из соображений вычислительной эффективности используются иные методы: например, тупой градиентный спуск в пространстве коэффициентов, где минимизируемой (целевой) функцией является сумма квадратов невязок.
Вот про это и спрашиваю его: Что значит "найти максимально близкое решение"?
Это зависит от реальных нужд. Вы должны подумать, зачем вам нужна система уравнений и какие ответы вам покажутся более приемлемыми, чем другие.
Как можно понять из предыдущего абзаца, часто близким решением считается такое, которое даёт минимальную сумму квадратов невязок, плюс добавляют сумму квадратов коэффициентов. Хотя модно и по некоторым причинам полезно применять L1-регуляризацию ("лассо"), когда штрафная функция - сумма модулей коэффициентов.
Вы отвечаете человеку некорректными терминами и еще больше его путаете.
"тупой градиентный спуск в пространстве коэффициентов," - это таже задача МНК у нее есть итерационные методы решения и аналитические (через псевдоинверсию).
"Применяется регуляризация. Например, вместо несуществующей обратной матрицы используется псевдообратная." - регуляризация и псевдообратные матрицы это две разные темы, хотя их и рассказывают вместе часто.
L1 регуляризация это L1 регуляризация. LASSO - это метод РЕГРЕССИИ, которая использует L1 регуляризацию. И если уж совсем правильно, то в компьютере l1 и l2 метрики, а не L1 и L2.
И если вам так хочется пихать все вместе и сразу, то любой итерационный алгоритм порождает метод регуляризации.
"тупой градиентный спуск в пространстве коэффициентов," - это таже задача МНК у нее есть итерационные методы решения и аналитические (через псевдоинверсию).
Нет. Это не задача МНК, хотя задача МНК может решаться таким образом. МНК или не МНК - это разные виды штрафной (целевой) функции, а минимизировать её можно по-разному, и наоборот, одним методом градиентного спуска можно минимизировать разные целевые функции.
Нет, если вы решаете оптимизационную задачу через псевдоинверсию, это уже не градиентный спуск. Градиентный спуск - это когда вы итерационно спускаетесь по градиенту. Если же вы добиваетесь того же результата иным способом (через псевдоинверсию или как-либо иначе) - это называется как-нибудь по-другому. Аналитический от неаналитического способа градиентного спуска отличаются только в том, как именно вы считаете градиент на каждой итерации: разделённой разностью (численный метод) или аналитическим дифференцированием. Псевдообратная же матрица к методу градиентного спуска отношения не имеет.
L1 регуляризация это L1 регуляризация. LASSO - это метод РЕГРЕССИИ, которая использует L1 регуляризацию.
Наверно, философ поймёт разницу между регуляризацией, использующейся в регрессии, и регрессией, использующей именно эту регуляризацию. Я не философ, спорить не буду.
И если уж совсем правильно, то в компьютере l1 и l2 метрики, а не L1 и L2.
Ясное дело, что если вы занимаетесь не функциональным анализом, а оптимизационными задачами, то Ln означает не лебегово пространство функций, а пространство векторов. В каждом разделе математики свой жаргон.
Если система нерешается потому что уравнений или праметров не равное количество (недоопределенные и переопределенные системы), то имеется ввиду решение в виде МНК.
Если она после этого не решается, то имеется ввиду использование регуляризации. Обычно регуляризации по Тихонову, но можно и SVD отсечение сделать.
В универе был анализ данных. За 2 года курса у меня математики было больше и сложнее, чем за отдельные курсы матана, линала, дискры, мат.стата. После курса я понял что не хочу заниматься анализом данных. Могу конечно написать (собрать) нейросеть простую на питоне из готовых библиотек, но именно что-то дико серьезное сделать, увы, но скоре всего нет, знаний не зватит.
Никто не пишет сети. Все берут готовые либы, и на них обучают. В основном все занимаются сбором данных и их отчисткой, и навешивают на готовые модели. И если проблема ну никак не решаются, могут подумать и привлечь спеца, который разработает модельку под их хитровыпеленную задачу.
Но обычно, большинство проблем решаются правильно подобранной лосс-функцией.
Считаю, что хуже и опаснее то, что такие люди своими действиями дискредитируют машинное обучение, как черную коробку, которая не факт, что работает. Из-за низкого качества кода, да и понимания основ в целом, некачественный продукт просто убил репутацию и значимость цифровизации в реальном секторе, что не даёт нормально развиваться этому направлению. Загуглить библиотечки и реально шарить - недостижимо разные уровни. Но так как нет стандартов, ноторые помогут заказчикам разбираться, где говно, а где решение, у нас каждый суслик с ютуб в поле агроном
Хороший ML делают менеджеры и админы, а не математики. Сбор и разметка данных в реальном секторе требует дополнительных накладных расходов, поэтому там все сложно. Шарить - это знать как сделать инфраструктуру для сбора и обработки данных, а не шарить в математике. Решают в итоге данные и менеджмент данных, а не метод обучения
Обучить ML можно за 2 года, так же как как и ООП с базами данных. В США уже есть вузы с программой где линага+статистика+ML+DeepLearning заканчивается на 2 курсе.
В США МакКинзи, кажется, ещё 5 лет назад спрогнозировал огромную потребность в таких специалистах. С кадрами там проблем нет. Преподают действительно актуальный материал.
У нас качественных специалистов всегда будет дефицит. В таких условиях, действительно, менеджмент будет играть бОльшую роль.
Дайте время заказчику - ему нужно осознать, где гавно, а где не очень. Ему нужно выработать стратегию оценки продукта... все будет хорошо ;)
Проблема не в этом. Проблема в том, что если удачно случайно настакал модель, можно заехать в очень хороший результат, в то время как очень долгий анализ данных и корректировка модели под задачу может практически ничего не дать.
Задачи все уникальны и всегда отличаются друг от друга. Тупой брут-форс + фиче-инженеринг. Тупо, быстро, эффективно.
Полная версия этой картинки такова. Но видимо у кого-то иное мнение относительно С и С++, поэтому картинку тупо обрезали.
Лично я бы наоборот, еще к ней дорисовал, на дне пещеры ассемблер.
Я в школьном детстве писал асм-код для КР580ИК80А в тетрадку, потом переводил в машинные коды по таблице команд из журнала "Радио", высчитывая шеснадцатеричные адреса для относительных переходов, потом вбивал весь этот машинный код с клавиатуры в Апогей БК-01. А потом оно у меня РАБОТАЛО! Я так тогда написал эмулятор пианино и что-то типа "Блокнота", примитивный текстовый редактор.
это жестоко, но других вариантов особо и не было. Было дело друг задумал спаять телефон с АОНом, нашёл публикацию в журнале "Радио". Я ему набивал "с листа" прошивку в файл. Толи две толи три страницы с 16-ричным дампом мелким шрифтом было :)
Дампы из "Радио" я тоже набирал, но это не "своё" )) а вся фигня была в том, что Апогей мне достался без комплектных кассет, на которых должен быть компилятор ассемблера.
на картинке все языки в кучу, от веба и мобильной разработки до машинного обучения. от такого винегрета действительно можно кукухой поехать
Не, тут смысл в том, что все эти языки не будут работать без интерпретатора / виртуальной машины. А они написаны на C/C++.
Ну, я таки думаю, где-то на дне пещеры с сями как раз и будет какой-нибудь заросший паутиной вход в ассемблер
В смысле, что виртуальные машины написаны на C/C++? А на чем они ещё могут быть написаны? Не на паскале же.
Виртуальная машина может выполняться на другой виртуальной машине, но до физического железа то оно всё равно должно дойти. Машинный код из всего этого многообразия может генерировать только C/C++, Swift и Haskell (реализации компиляторов которого написаны на Си https://ru.wikipedia.org/wiki/HUGS и Си и Haskell https://ru.wikipedia.org/wiki/Glasgow_Haskell_Compiler из тех, что можно посмотреть в википедии.)
Да, но язык сам по себе ничего не генерирует.Совершенно внезапно компилятор может быть написан на языке, для которого он написан (Bootstrapping)
Почти все компиляторы C/C++ написаны на C/C++, да.
Но нельзя написать виртуальную машину, которая бы выполнялась сама на себе.
Если на python написать интерпретатор python, то чтобы его запустить, потребуется уже запущенный ранее интерпретатор python. Он не может интерпретировать сам себя.
Есть, ну и что?
"могут быть написаны" != "написаны". Может и есть несколько исключений, но это исключения.
Да что-то ты не нормальный. Я далёк от программирования, но даже тут вижу Java и php. Странно, что нет С++.
- становись одинесником как я
- но этоже просто ДвижениеПриход, ДвижениеРасход
- ты че пёс, я программист
То есть это не коробочное решение, которое каждый может донастроить под себя расставлением галочек и вводом констант? А ведь когда-то девизом 1С было "доступно и всерьез" и предполагалось, что с дальнейшим развитием надобности в программировании для обслуживания их конфигураций будет всё меньше и меньше, вплоть до полного исчезновения кодеров, с их заменой на неких "консультантов". Но что-то пошло не так (в какой-то момент, где-то с 8.1).
А то, что в коде типовых (особенно на БСП) чёрт ногу сломит - еще не признак программирования. Скорее это говорит о скудости средств, как языка, так и среды разработки.
Ну и сам приведённый диалог - скорее некий стёб над представлением "тру программеров" об одинэсниках, среди которых так-то масса достойных людей, не принимайте близко к сердцу.
Hello, world - это первый шаг программирования - вывод указанного текста на экран и всё.
ООП - объектно ориентированное программирование, следующий шаг после классического процедурного.
Дальше следующий шаг, а вот почему алгоритмы следующий мне не очень понятно.
Ну и про последний выше уже рассказали.
изи. Все эти модные нейронки/рэндом форесты и прочие Х-Г-Бусты с точки зрения современного дата-сатаниста представляют собой тупо функцию в питоне, которой на вход подается ворох настроечных коэф-тов. Дальше все сводится к перебору этих коэф-тов до тех пор, пока кач-во модели не станет удобоворимым. Хороший математик в перебор коэф-тов вкладывает какой-то смысл, потому как понимает, что там вообще может быть. Все остальные Карлсоны тупо делают gridsearch по огромной сетке параметров и тупо отбирают наилучшее. Цимес в том, что скорее всего результат будет одинаковый в обоих случаях, но в первом это будет быстро и математично, а во втором - как на картинке.
Очень глупый пример. Потому что никто не сможет предположить как будет себя вести сеть, пока не переберут эти коефф. Можно конечно сделать hyper parameter optimization через Gridsearchcv/RandomizedSearchCV или те же самые talos/hyperas и дать больше веса одним параметрам (learning rate ) и меньше другим (activation function), но в конце и будет это самое «рандомная подборка коэффициентов»
Практика без теории? Чистый рандом?
И в физике также?
Предположить можно. Но!!!! Сказать с точностью что если поменять learning rate на другое число и от этого будет вот такой accuracy невозможно. Я не физик и сказать как в физике я не могу. В data science это не чистый рандом, но model interpretability остаётся одной из самых больших проблем и сказать с абсолютной точностью как поведёт себя модель с batch size =100, 3 layers и тд, невозможно. Поэтому даже Бенгио на вопрос как подбирать количество слоёв, сказал что он их подбирает наугад. Если бы можно было предугать как поведёт себя сеть, то talos/hyperopt были бы бесполезны. Hyperparameter optimisation остаётся большой research area
Можете дать ссылку как это делать (статья или просто онлайн ресурс)? Просто я не могу представить себе как можно это сделать
Бухгалтер тоже так на программистов смотрит: целыми днями нихуя не делают, только кнопки нажимают.
IT-юмор
5.7K поста52.6K подписчика
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору