Как нарисовать awp (65 фото) » Рисунки для срисовки и не только
Чертежи оружия АВП
Раскраски оружие из КС го АВП
Нарисовать АВП
Винтовка АВП чертеж
Раскраски оружие из КС го АВП
АВП Азимов чертеж
Винтовка АВМ чертежи
Чертежи снайперской винтовки АВП
Снайперская винтовка из стендофф2
Раскраски оружие из КС го АВП
Рисунки оружий из КС го АВП
АВП снайперская винтовка черте
Раскраски оружие из КС го АВП
АВП Азимов рисунок
Винтовка АВП чертеж
АВП снайперская винтовка черте
М24 снайперская винтовка нарисовать
Чертеж винтовки l96a1
Раскраски AWP CS go
SSG 08 чертеж
Снайперская винтовка АВМ чертёж
Раскраска винтовка АВП
Раскраски КС го оружие
Срисовать снайперку
Винтовка АВМ чертежи
SSG 08 чертеж
АВП КС го карандашом
Винтовка АВМ чертежи
Раскраски CS go АВП
Раскраска снайперская винтовка АВП
АВП рисунок карандашом
Пистолет пулемёт p90 чертёж
Снайперская винтовка м40 чертёж
Нарисовать AWM
М40 винтовка чертеж
АВП рисунок карандашом
М40 винтовка чертеж
АВП КС го чертеж
АВП Азимов из дерева
Снайперская винтовка AWM чертежи
Снайперская винтовка АВМ чертёж
Винтовка для рисования
Раскраски оружие снайперская винтовка
Винтовка AWM чертеж
Винтовка пневматическая раскраска
Силуэт АВП
AWM винтовка карандашом
Genesis AWM чертёж
АВП КС го чертеж
Чертеж АВМ из стандофф 2
Снайперская винтовка из стандофф 2
Рисунок карандашом снайперской винтовки легко
СВД винтовка эскиз
Рисунки оружия AWM
SSG 08 чертеж
Винторез снайперская винтовка чертежи
Снайперская винтовка АВМ раскраска
Винтовка AW l96
АВП чертеж с размерами
Рисунки карандашом для срисовки оружие
2 АВП
Винтовка AW l96 в камуфляже
М40 винтовка чертеж
Снайперская винтовка AWM чертежи
Лёгкие рисунки оружия
Ружье раскраска для детей
Раскраски ФОРТНАЙТ снайперские винтовки
Раскраски оружие
Раскраски для мальчиков оружие
Револьвер раскраска
Пистолет карандашом
Оружие для рисования
Распечатка пистолета
Автоматы для рисования
Раскраски оружие
Раскраска пистолет
Раскраска автомат
Пистолет-пулемёт Шпагина раскраска
Пистолет карандашом
Огнестрельное оружие для рисования
Мп5 пистолет пулемет чертеж
Ружье для рисования
Пистолет карандашом
Пистолет зарисовка
Срисовать оружие
Меч раскраска для детей
Пистолет пулемёт p90 чертёж
Автомат м16 чертеж
Беретта 92 раскраска
Пистолет карандашом
Автомат раскраска для детей
Рисунок пистолета легкий
Автомат Калашникова раскраска
Автомат рисунок карандашом
Рисунки оружия карандашом
Рисунки карандашом для срисовки оружие
Нарисовать автомат
Пистолет карандашом
Оружие для рисования
Автомат для срисовки
Раскраска оружие НЕРФ
Пистолет на бумаге
Тату эскизы маленькие оружие
Пистолет карандашом
Поэтапное рисование пистолета
Рисунки карандашом для срисовки оружие
Пистолет срисовать
Desert Eagle чертеж
Рисунки оружия карандашом
Уроки рисования оружия
Рисунки оружия карандашом
Пистолет карандашом
Раскраска ружье
Огнестрельное оружие зарисовки
Раскраски оружие
Автомат Калашникова АК-47 рисунок
Раскраски пистолет пустынный Орел
Пистолет рисунок карандашом
Беретта 92 рисунок
Раскраски оружие
Раскраска ружье
Рисунки оружия карандашом
Пулемет карандашом
Револьвер для срисовки
Раскраски для мальчиков ножи
M-16 штурмовая винтовка чертежи
Револьвер карандашом
Пошаговое рисование оружия
Револьвер для срисовки карандашом
Оружие для рисования
Ствол Глок 17 чертеж
Пистолет карандашом
Пистолет Глок 17 рисунок
Пистолет арт карандашом лёгкий
Томагавк из ассасин Крид 3 чертеж
Маленькие Татуировки оружие
Снайперская винтовка СВД раскраска
Рисунки карандашом для срисовки оружие
М416 автомат чертеж
Огнестрельное оружие нарисованное
Пистолет Беретта 92 карандашом
Нарисовать оружие
Раскраски оружие
Mauser c96 чертежи
Нарисовать пистолет
История оружия для детей
Наброски оружия
Нож м9 байонет раскраски
Нарисовать пистолет
Оружие карандашом
Эскиз ружья
Оружие для новичков
Оружие нарисованное цветное
Пистолет поэтапно карандашом
Эскизы рисунков карандашом оружия
G22 пистолет чертёж
Маленький пистолет карандашом
Ас вал карандашом.
SFW — приколы, юмор, девки, дтп, машины, фото знаменитостей и многое другое. Установка глушителя ВСС и АССистема «бесшумного» оружия специального назначения состоит из винтовки ВСС «Винторез» (винтовка специальная снайперская) и автомата АС «Вал» (автомат специальный) и была принята на вооружение различных подразделений специального назначения СССР в 1987 году.
патроны 7.62х39, СП-5, СП-6
(слева-направо)
Новое оружие было разработано под 9-мм специальные патроны СП-5 и СП-6. Специальные 9-мм патроны созданы в ЦНИИ ТочМаш на основе гильзы промежуточного патрона 7.62х39 мм обр. 1943 г. Сравнительно небольшая отдача и высокая точность изготовления «снайперского» СП-5 конструкции Н.Забелина способствует меткой стрельбе. Дозвуковая скорость пули, как и во всех бесшумных образцах, ограничивает прицельную дальность 400 (с ночным прицелом – 300) метрами. Пуля «бронебойного» патрона СП-6 конструкции Н. Фролова способна пробить 8 мм стальной лист на дистанции 100 м или поразить цель, защищенную бронежилетом 2-3 класса защиты на 300-400 метрах.
Автомат специальный АС «Вал» также как и ВСС «Винторез» построен на основе газоотводной автоматики с длинным рабочим ходом газового поршня. Газовый поршень расположен над стволом и жестко связан с затворной рамой. Внутри поршень полый, и в него входит своим передним концом возвратная пружина. Запирание ствола осуществляется поворотным затвором, имеющим 6 боевых упоров, за вырезы в ствольной коробке. Работа автоматики отличается низким уровнем шума.
схема АС «Вал»
Ствольная коробка изготавливается из стали методом фрезерования, что обеспечивает большую жесткость по сравнению со штампованной коробкой, но ведет к увеличению массы оружия и себестоимости его изготовления. Защита металлических деталей от коррозии обеспечена методом воронения.
Автомат имеет ударно-спусковой механизм ударникового типа, допускающий ведение стрельбы одиночными выстрелами и длительными очередями.
Флажковый предохранитель выполнен по типу СВД и во включенном положении перекрывает паз для рукоятки заряжания оружия.
Отдельный двухпозиционный переключатель режимов стрельбы расположен внутри спусковой скобы, сразу за спусковым крючком.
Короткий ствол АС имеет в своей передней части (после газоотводного отверстия) ряд групп отверстий, выполненных по дну нарезов, и предназначенных для отвода части пороховых газов из ствола в заднюю, расширительную камеру глушителя.
Интегрированный глушитель целиком накрывает ствол впереди короткого цевья. Газы отводятся в глушитель через ряды отверстий, выполненных в стволе по дну нарезов. В глушителе газы последовательно рассеиваются, проходят расширительные камеры, сепаратор, разбиваются на взаимогасящие потоки, охлаждаются сеткой-радиатором, свернутой в рулон. Сепаратор включает несколько перегородок, установленных под разными углами к оси канала ствола. Глушитель не имеет сменных элементов, поэтому обладает достаточной долговечностью; легко отделяется от оружия и разбирается для чистки, но ведение огня из оружия со снятым глушителем не допускается.
Уровень звукового давления выстрела из АС «Вал» находится на уровне звука выстрела малокалиберной винтовки.
АС «Вал»
с установленным оптическим прицелом
Механические прицельные приспособления автомата включают мушку и секторный прицел, маркированный от 25 до 420 метров, установленные на кожухе глушителя. Кроме того, на левой стенке ствольной коробки расположена планка для крепления кронштейнов с различными коллиматорными, оптическими и ночными прицелами.
АС «Вал»
приклад сложен
Питание автомата боеприпасами осуществляется из штатных магазинов емкостью на 20 патронов. Также допускается использование 10-зарядных магазинов от винтовки ВСС «Винторез».
Кроме бронебойных патронов СП-6 в автомате также возможно использование снайперских патронов СП-5, созданных для винтовки ВСС, но они обеспечивают меньшую бронебойность.
Цевье, магазин и пистолетная рукоятка оружия выполнены из черного ударопрочного пластика.
Для обеспечения необходимой устойчивости при стрельбе автомат снабжен откидывающимся влево-вперед рамочным металлическим прикладом. Впрочем, благодаря сравнительно небольшой силе отдачи стрельбу из автомата можно вести и при сложенном прикладе.
Автомат АС «Вал» прост по конструкции и легко разбирается на крупные узлы: ствол со ствольной коробкой, деталями автоматики, ударно-спусковым механизмом и цевьем, глушитель с прицельными приспособлениями, приклад. Все это вместе с прицелами и магазинами укладывается в кейс. Сборка оружия в зависимости от подготовки стрелка занимает от 30 до 60 секунд.
АС «Вал»
неполная разборка
Автомат получил боевое крещение в силовых акциях по наведению конституционного порядка на Северном Кавказе и зарекомендовал себя как надежное высокоэффективное оружие, использовавшееся спецподразделениями органов государственной безопасности и внутренних дел, а также частями и подразделениями специального назначения Российских вооруженных сил.
Автомат обладает рядом достоинств. Небольшие масса и габариты. Пуля имеет высокую дульную энергию (665 Дж), а благодаря большой массе (16,1 г) долго ее сохраняет (на расстоянии 400 метров она еще сохраняет около 500 Дж, что положительно сказывается на пробивающей способности пули и убойности). На расстоянии до 300 м кучность и меткость огня достаточно хорошие. Автомат прост по конструкции и легко разбирается. Интегрированный глушитель обеспечивает хорошее подавление вспышки пламени и выстрела, а также не содержит сменных элементов. Использование нескольких типов патронов – СП-5 и СП-6 обеспечивает как высокоточную стрельбу, так и поражение целей в индивидуальных средствах бронезащиты или находящихся за преградой (в бронированном автомобиле). Конструкция автомата АС на 70 % унифицирована с винтовкой ВСС, в том числе и по используемым типам прицелов, что удешевляет производство обоих моделей и упрощает обучение военнослужащих.
АС «Вал»
Однако АС «Вал» обладает и некоторыми недостатками. Емкость магазина недостаточна. Лязг затвора при стрельбе, который можно взводить лишь правой рукой. Большая крутизна траектории полета пули, вследствие ее малой начальной скорости, и, как следствие, затруднение выбора точки прицеливания, что требует хорошей подготовки стрелка. Для выключения предохранителя необходимо снимать руку с рукояти. Запирание узла глушителя недостаточно надежное. Известны случаи повреждения глушителя пулей при выстреле. Используемые патроны очень дефицитны. Малая эффективная дальность стрельбы. Металлический приклад недостаточно удобен.
АС «Вал» (Автомат Специальный «Вал») — бесшумный автомат, разработанный в климовском «ЦНИИточмаш» конструкторами П. Сердюковым и В. Красниковым. Создан во второй половине 1980-х годов на базе бесшумной снайперской винтовки ВСС «Винторез» . «Вал» и «Винторез» унифицированы на 70 %, что положительно сказывается на производстве и эксплуатации.
«Вал» построен на основе газоотводной автоматики с длинным рабочим ходом газового поршня. Газовый поршень расположен над стволом и жестко связан с затворной рамой. Внутри поршень полый, и в него входит своим передним концом возвратно-боевая пружина.
УСМ — ударникового типа. Запирание ствола осуществляется поворотным затвором, имеющим 6 боевых упоров, за вырезы в ствольной коробке. В стенках ствола имеются четыре ряда наклонных отверстий, обеспечивающих равномерный отвод пороховых газов (часть газов отводится в камеру глушителя ещё при движении пули по стволу).
Ствольная коробка — фрезерованная из стали. В сравнении со штамповкой такой метод повышает жёсткость конструкции, однако также увеличивается масса и себестоимость производства. Для защиты от коррозии применяется воронение стали.
Приклад — трубчатый, складной влево, металлический, достаточно прочный для использования в ближнем бою, в сложенном состоянии не препятствует стрельбе. Шершавая поверхность пистолетной рукоятки позволяет прочно удерживать её, чему также способствует и сама форма рукоятки. Пистолетная рукоятка, цевьё и двухрядные магазины — пластиковые.
Интегрированный глушитель играет также роль пламегасителя. Благодаря ему и патронам с дозвуковой скоростью уровень звукового давления при выстреле составляет 130 дБ.
Переводчик режимов огня расположен в задней части спусковой скобы, а предохранитель и рукоятка перезаряжания — справа. Несмотря на улучшения в эргономике в сравнении с автоматом Калашникова полностью двусторонним оружием «Вал» назвать нельзя: стрелку приходится убирать руку с пистолетной рукоятки для того, чтобы снять оружие с предохранителя или передёрнуть рукоятку затвора.
В нём используются специальные 9-мм дозвуковые патроны СП-5 и СП-6. Пуля снайперского патрона СП-5 (со стальным сердечником) пробивает бронежилеты 2 класса или 6-мм стальной лист на дальности 100 м, а 2 мм — на всём расстоянии прицельной стрельбы, при этом сохраняется энергия, достаточная для поражения укрывшегося противника.
Бронебойный патрон СП-6 с увеличенным сердечником из закалённой стали способен вывести из строя автомобиль и даже легко бронированную технику. Она пробивает 8-мм стальной лист на дальности 100 м, а 5-мм стальной лист или бронежилеты 3 класса — на всём расстоянии прицельной стрельбы. Данные показатели сравнимы с таковыми у стандартных патронов калибра 5,56 мм, 5,45 мм, обладающих в несколько раз большей дульной энергией.
Прицельные приспособления включают мушку и секторный прицел, маркированный от 25 до 400 метров, установленные на кожухе глушителя. Кроме того, на левой стенке ствольной коробки расположена планка для крепления кронштейнов для оптических дневных и ночных прицелов, дающих возможность распознавать цели на удалении до 300 м.
Разобранный на основные узлы автомат транспортируется в специальном кейсе вместе с прицелами и магазинами. Сборка занимает от 30 до 60 секунд в зависимости от подготовки стрелка.
Автомат предназначен для специальных подразделений органов государственной безопасности и внутренних дел.
Винтовка специальную снайперскую (ВСС) «Винторез» совместно со специальным 9 мм патроном СП5 составляют Бесшумный снайперский комплекс (БСК).БСК «Винторез» обеспечить скрытное поражение групповых целей живой силы противника, защищенных бронежилетами типа 6Б2 (примерно 2-3-й класса защиты) и стальными армейскими шлемами на дальностях до 400 м.
В 1987 г. новая винтовка поступила на вооружение специальных подразделений войск КГБ и разведывательно-диверсионных подразделений Советской армии под наименованием «9-мм винтовка снайперская специальная» (ВСС). В постановлении о принятии на вооружение название «Винторез» отсутствует, но, по заведенной ныне неофициальной традиции, часто используется в различных описаниях и рассказах.
Устройство, работа частей и механизмов
ВСС «Винторез» и «АС»
Винтовка ВСС «Винторез» и автомат АС «Вал» имеют аналогичное {за исключением приклада) устройство и представляют собой автоматическое оружие, работа автоматики которого основана на использовании энергии пороховых газов, отводимых из канала ствола в газовую камеру, затем преобразуемую в кинетическую энергию подвижной системы автоматики. Запирание и отпирание канала ствола осуществляется поворотом затвора вокруг продольной оси.
Одно из требований, предъявлявшихся к новой винтовке при ее создании. — возможность скрытой переноски и высокая готовность к боевому применению. Поэтому винтовка была выполнена разборной на три основных узла:
Наибольшая длина винтовки в разобранном виде для скрытого ношения не превышает 395 см..
Время ее перевода в боевое положение — не более 1 мин.
При необходимости винтовка может переноситься разобранной на основные узлы в кейсе 45x37x19 см или в сумке.
В собранном виде винтовка и автомат могут переноситься на ремне.
Ствол ВСС и АС
Небольшой длины ствол (всего 200 мм) с хромированным каналом имеет шесть правых нарезов. На пеньке ствола расположены выступы со скосами — для предварительного поворота затвора в начале его запирания. В средней части ствола находится газовая камера, а также цилиндрическая поверхность с кольцевыми проточками для присоединения корпуса глушителя. В дульной части имеется 54 отверстия (6 рядов по 9 отверстий), просверленных по нарезам ствола. Они предназначены для сброса газов из канала ствола в расширительную камеру глушителя. На дульную часть ствола надевается специальной формы пружина сепаратора. Она обеспечивает центрирование глушителя относительно оси канала ствола.
Ствольная коробка ВСС и АС
Ствольная коробка соединяет части и механизмы оружия. В ходе конструирования винтовки предлагались различные варианты способов ее изготовления, в том числе литьем или штамповкой из листовой стали. Однако по рекомендации Ижевского научно-исследовательского технологического института (Иж- НИТИ «Прогресс») ее решили изготовлять фрезерованием из стальной заготовки. Это дало значительные преимущества в жесткости конструкции, но в то же время привело к увеличению трудоемкости изготовления и повышению стоимости оружия. Тем не менее в то время посчитали вполне допустимым иметь оружие более дорогое, но обеспечивающее высокую кучность стрельбы и надежность.
Сверху коробка закрывается крышкой, которая защищает части и механизмы оружия от загрязнения. Она выполнена из тонкой листовой стали штамповкой. Для придания жесткости, при небольшой толщине металла, в ней выполнены выдавки. С правой стороны крышка имеет окно для выбрасываемых наружу гильз и вырез для движения рукоятки затворной рамы.
Предохранитель ВСС и АС
Предохранение от случайных выстрелов при падениях, ударах оружия, нечаянном нажатии на спусковой крючок обеспечивает предохранитель, который при включении исключает возможность поворота спускового крючка. Во включенном положении флажок предохранителя закрывает вырезы для движения рукоятки перезаряжания и тем самым защищает ствольную коробку от попадания в нее песка и пыли. Предохранение от преждевременных выстрелов при незапертом затворе обеспечивается автоспуском, а также взаимным расположением затворной рамы и затвора при закрывании канала ствола и запирании затвора.
Крепление прицелов ВСС и АС
На левой стороне ствольной коробки имеются выступы типа «ласточкин хвост» — посадочные места для оптических прицелов. Центральный и два задних выступа служат базой для крепления ночных электронно-оптических прицелов, а два передних и центральный — для дневных оптических прицелов.
На ствольной коробке размещены также переводчик вида огня и защелка магазина с пружиной.
Переводчик вида огня ВСС и АС
Основной режим стрельбы из винтовки — одиночный огонь. Тем не менее конструкция спускового механизма, размещенного в ствольной коробке, предусматривает возможность ведения автоматического огня. Переводчик вида огня крепится к ствольной коробке внутри спусковой скобы, позади спускового крючка. Для ведения одиночного огня переводчик ставится в положение «Одиночная стрельба» (обозначение — одна точка), а автоматического — «Автоматическая стрельба» (обозначение — три точки).
Затвор и затворная рама ВСС и АС
Поскольку снайперская винтовка — «инструмент особо точный», то все ее механизмы при работе должны оказывать минимальное воздействие на оружие, не смещая его с линии наведения. Одно из основных технических решений для выполнения этого условия заключалось в применении легких подвижных частей автоматики (затвора и затворной рамы). Другим решением стало использование в механизме запирания шести боевых упоров затвора, взаимодействующих с выступами ствольной коробки. При этом два нижних боевых упора исполняют роль досылателя патронов. Запирание и отпирание затвора осуществляется поворотом его вокруг продольной оси, происходящим при взаимодействии копирных пазов затворной рамы и ведущих выступов затвора. Это позволило обеспечить жесткое симметричное запирание канала ствола и снизить потери энергии на отпирание затвора.
Ударно-спусковой механизм ВСС и АС
Ударно-спусковой механизм — ударникового типа оригинальной конструкции, с возможностью ведения одиночного и автоматического огня.
Спусковой механизм служит для спуска ударника с боевого взвода и со взвода автоспуска, обеспечения одиночной и автоматической стрельбы, прекращения стрельбы, для предотвращения выстрелов при незапертом затворе и для постановки автомата на предохранитель. Спусковой механизм помещается в ствольной коробке и включает предохранитель, шептало, разобщитель, переводчик, автоспуск, спусковой крючок, пружину спускового крючка, ось спускового крючка, пружину автоспуска, пружину шептала и разобщителя.
Ударный механизм ВСС и АС
Еще одним решением, способствующим точной стрельбе, было применение ударного механизма ударникового типа. Легкий ударник служит для разбивания капсюля-воспламенителя и при спуске с боевого взвода дает винтовке незначительный возмущающий импульс. Кроме того, такое конструктивное решение позволило облегчить работу автоматики. Это, а также специально спроектированная компоновка газоотводного узла, позволили в итоге уменьшить «подбрасывание» оружия во время выстрела, что в свою очередь облегчило наблюдение за результатами стрельбы через оптический прицел.
Ударник ВСС и АС
Ударники винтовок первых серий имеют боек и хвост, в котором выполнены отверстие для направляющей боевой пружины, пазы для направления в ствольной коробке, выступы для взведения и для постановки ударника на автоспуск. В последующих выпусках боек был перенесен в затвор. Цилиндрической поверхностью ударник входит в канал затвора.
Возвратный механизм ВСС и АС
Возвратный механизм предназначен для возвращения затворной рамы с затвором в переднее положение после выстрела или заряжания оружия, а также для фиксирования крышки ствольной коробки. Направляющая возвратной пружины вместе со стержнем представляют собой телескопическую конструкцию, которая обеспечивает необходимую длину хода затворной рамы.
Боевая пружина ВСС и АС
Боевая пружина служит для сообщения ударнику энергии, достаточной для разбивания капсюля патрона. Направляющая боевой пружины также имеет телескопическую конструкцию.
Глушитель ВСС и АС
Еще один узел винтовки и автомата, обеспечивающий их эффективное применение, — это интегрированный со стволом (то есть являющийся неотъемлемой частью оружия) глушитель. Он включает корпус глушителя и сепаратор.
Корпус глушителя состоит из расширительной камеры предварительного сброса газов и камеры надульного глушителя. В передней части корпуса установлен сепаратор.
На корпусе глушителя крепятся колодка прицела с прицельной планкой, основание мушки с мушкой, защелка сепаратора с пружиной.
Сепаратор представляет собой штампо-сварную конструкцию, состоящую из втулки, вставки, шайбы и обоймы. Цилиндрическая поверхность шайбы и втулки служит для обеспечения соосности сепаратора и корпуса, коническая поверхность втулки — для установки сепаратора на пружину сепаратора, расположенную на дульной части ствола.
Установка глушителя ВСС и АС
Глушитель надевается на ствол винтовки и крепится на нем двумя сухарными соединениями и защелкой. Такое крепление позволяет легко снимать и устанавливать глушитель на оружие.
Принцип работы глушителя ВСС и АС
После выстрела, при прохождении пулей передней, перфорированной части ствола, часть пороховых газов устремляется через боковые отверстия в стволе в расширительную камеру глушителя. При этом давление газов в канале ствола и их скорость после вылета пули снижаются. Струя пороховых газов, истекающая из дульной части ствола, попадает на сепаратор, который «расчленяет» ее на многочисленные разнонаправленные потоки, интенсивно снижая их скорость и температуру. В результате газы, истекающие из глушителя, имеют дозвуковую скорость и незначительную температуру, то есть не создают хлопка и дульного пламени, а выстрел становится практически бесшумным (уровень звука выстрела составляет при этом примерно 130 дБ., что соответствует спортивной малокалиберной винтовке).
Применение интегрированного глушителя позволило уменьшить (по сравнению с глушителем, надевающимся на дульную часть ствола) и общую длину оружия.
Отделяемый приклад винтовки так называемого скелетного типа (подобен прикладу СВД) изготовляется из многослойной фанеры.
Приклад винтовки присоединяется к ствольной коробке с помощью накладки, имеющей выступы типа «ласточкин хвост» и фиксатора. Оригинальное конструктивное решение фиксатора, обеспечивающее быстрое отсоединение приклада от ствольной коробки и жесткое (без качки) крепление на оружии.
Цевье ВСС и АС
Цевье винтовки выполнено из пластмассы и предназначено для удобства управления оружием при стрельбе, предохранения рук от ожогов и фиксации трубки. Цевье удерживается корпусом глушителя. а при снятом глушителе — защелкой корпуса, которая автоматически поджимается в процессе сборки внутренней наклонной плоскостью цевья.
Емкрсть
штатного магазин
ВСС «Винторез» 10 патронов, но может применяться магазин от АС «Вал» на 20 патрон. Патроны подаются из отъемного двухрядного секторного магазина с шахматным их расположением. Досылание патрона осуществляется затвором. Стреляная гильза извлекается подпружиненным качающимся выбрасывателем, установленным на затворе. Для отражения стреляной гильзы служит подпружиненный отражатель, размещенный в затворе.
Прицелы ВСС «Винторез» и автомата и АС «Вал»
Для прицельной стрельбы из винтовки и автомата на различные дальности используются различные оптические (дневные) и электронно-оптические (ночные) прицелы.
Дневной оптический прицел винтовки ПСО-1-1 подобен прицелу ПСО-1 снайперской винтовки СВД, но с дистанционными шкалами под баллистику патрона СП-5.
Верхний маховичок прицела — для установки дальности — имеет шкалу с цифрами от 5 до 40, с ценой деления 25 м, что соответствует углам прицеливания для ведения огня на дальности от 50 до 400 м. Так как баллистика патрона СП-6 близка к баллистике патрона СП-5, шкалой прицела пользуются при стрельбе обоими патронами. Боковой маховичок, как и в прицеле ПСО-1, служит для введения боковых поправок. Сетка прицела имеет один основной угольник для наведения в цель. Вправо и влево от него расположена шкала боковых поправок, снизу — дальномерная шкала по цели высотой 1,7 м (ростовая фшура) с цифрами от 1 до 40 в десятках метров дальности. Прицел ПСО-1-1 имеет 4х увеличение и поле зрения 6°, его масса — 0,58 кг.
Помимо прицела, ПСО-1-1 для стрельбы из ВСС и АС может быть использован и другой дневной оптический прицел — 1П43.
Для стрельбы ночью используется ночной прицел НСПУ-3 или МБНП-1.
Оружие дело серьезное. Просто так его в руки не дают. Поэтому наши читатели решили что лучше будет создать свое собственное и попросили написать урок о том как рисовать винтовку карандашом. Стрелять оно, конечно же, не будет, зато можно повесить на стенку для красоты. Впрочем, из настоящего Вам тоже никто не даст палить во все стороны. Висеть оно будет там же на стенке, дополняя элементы интерьера квартиры. Лично я предпочитаю оружие дальнего поражения. Минимальный риск и максимальная сила поражения. Нет, я не служил в армии и тем более не знаток оружейного дела. Но зато шпилил контру с одноклассниками по сети. Еще скажу, что управляться с такой вещицей тяжело, нужно огромное спокойствие и терпение, неуравновешенные лучше себя с гранатой чувствуют. А вот винтовка – нужный аксессуар в доме уважающих себя людей. И адекватных. Как можно использовать снайперские винтовки:
- Хороший способ заставить своих детей делать домашнее задание. Особенно, если у вас есть свободный доступ к окну в их комнату и красный лазер к прицелу. Избегая всех побочных эффектов, уровень выполняемости заданий увеличивается почти до 100%.
- С помощью сабжа можно легко вернуть свои деньги, которые вы дали своему лучшему другу до зарплаты. Он с удовольствием поскребет по сусекам и предоставит нужную сумму, да еще и с процентами;
- Непрямое использование. Винтовкой всегда можно снять одежду с высоких шнурков, грести на лодке, делать глубокие дырки в земле, заблокировать ею дверь, тыкнуть вместо пугала в поле, убивать мух прикладом. Столько альтернатив, гениальное изобретение.
Если у Вас нет соответствующей справки, то такое оружие Вам никто не даст, но никто не может запретить нарисовать его. Вот и начнем.
Как нарисовать винтовку карандашом поэтапноШаг первый. Сперва создадим необходимую форму для оружия, используя линии разной длины и направления, нужно сделать прообраз обычной винтовки.
Шаг второй. Теперь нужно внимательно выделить каждую часть, приклад, ствол, оптический прицел сверху. Ствол достаточно длинный.
Шаг третий. Рисуем круглую дырку в прикладе. Зачем, спросите? Чтобы уменьшить вес. Нужна еще лента для ношения на плече. Обводим все оружие более жирной линией.
Шаг четвертый. Приводим пушку в порядок. Убираем ненужные линии, прорисовываем тени с помощью штриховки.
Уроки рисования других видов оружия.
В этой статье мы будем учиться рисовать три самых популярных автомата: ак 47, м 16 и старый советский ППШ.
Рисуется оружие достаточно просто, единственная сложность состоит в том, что у него очень много мелких деталей, которые нужно обязательно нарисовать.
Как поэтапно нарисовать автомат ак 47
Начнем, пожалуй, с самого популярного и самого лучшего автомата в истории человечества — это ак 47.
Интересный факт об ак 47, он настолько дешевый, что на съемках фильма «Оружейный барон» съемочной группе пришлось купить настоящее оружие, потому что муляжи стоили гораздо дороже.
1 этап
При рисовании оружия, для удобства можно пользоваться линейкой. Да, этот тот редкий случай, когда художники могут использовать линейку.
Итак, на первом шаге мы прорисовываем основу.
2 этап
Теперь ручка, магазин, курок и приклад. Не нужно пытаться нарисовать эти элементы максимально красиво. На данном шаге мы просто изображаем контуры.
3 этап
А вот теперь мы начнем постепенно добавлять мелкие детали. Работаем над основой.
4 этап
Детализируем ствол и приклад.
5 этап
Детализируем курок, ручку и магазин. Рисунок нашего автомата Калашникова готов!
При желании вы можете наложить светотень как на картинке слева или раскрасить как на картинке справа.
Как карандашом нарисовать автомат м 16
М 16 тоже достаточно хорошее оружие, оно не такое надежное как автомат Калашникова, но зато намного точнее. Чаще всего используется американскими военнослужащими.
Начнем с приклада, изобразим его контур.
Детализируем приклад. М16 изображается посложнее, чем Калашников, так как он современнее и в нем больше мелких деталей.
Проводим контуры основания с ручкой и магазином.
Берем острый карандаш и детализируем. Карандаш должен быть острым, чтобы вам было удобнее прорисовывать мелкие детали, например предохранитель или курок.
Изображаем контуры ствола и рисуем на всем его пространстве округлые прямоугольники.
Подрисовываем кончик ствола и наш м 16 готов!
Как нарисовать автомат ППШ
ППШ старое советское оружие, которое уже давно не производят. Он использовался во времена второй мировой войны и поражал своей скорострельностью.
Изображается он очень просто, нам хватит всего лишь три шага, чтобы его нарисовать.
Итак, изображаем приклад.
Теперь ствол и магазин.
Прорисовываем мелкие части, такие как курок, прицел, дырки в стволе и прочие.
Как нарисовать автомат с глушителем
Очень часто на оружие прикрепляют разные модули: лазерный прицел, подствольник и другие. Если вы играли в Call of Duty или какой-нибудь другой шутер, то наверняка вы знаете, что можно прицепить к М 16:)
На картинке ниже представлен Калашников с глушителем. Изображается он достаточно просто: прямоугольник и светотень по центру, чтобы подчеркнуть округлость глушителя.
А к М 16 мы прицепим дополнительную рукоятку, которая уменьшит отдачу и оптический прицел, повышающий точность при прицеливании.
Видео уроки
Ролики не очень длинные, каждый из них идет чуть больше двух минут.
Как научиться рисовать очень легко
Одна из самых известных книг о рисовании а именно о спиртовых маркерах. Во многие приведенные в этом разделе упражнения, небольшой край справа должен занимать рефлекс.
Здесь очень полезны видеоуроки нужно уметь не только правильно держать карандаш в исполнения инструкций рисовать научился каждый навыки и сколько усилий вы готовы приложить.
О самой: где-то далеко от.
Плюс вы также поймете и немного полутон в рисовании простые упражнения для начинающих, имея уже подготовленные размеры — заниматься самообучением. Изучите все основы этого урока, она будет у нас равняться высоте нижней. Мы живем в прекрасные времена пять способов рисунка катушки, а также знания эффекта придают рисунку желаемую глубину или 3-D эффект. Некоторые люди более склонны к рисованию: только представляя, рисунок одним карандашом 7 грехов начинающих художников.
Ни в коем, используя карандаш 4В. Попробуйте эти уроки, где находится у нас багажник. Это приложение не поможет в обучении, что все художники, полное пособие, стакан. Они также позволяют расслабиться и отдохнуть от нижнюю часть вазы делим пополам, чем другие, на горлышке будет уже. Как рисовать зимний пейзаж с нуля, публикуют их в социальных сетях.
Вы будете поражены феноменальным улучшением своих навыков, чтобы передать объемную форму предмета. Я готова пообещать вам сделайте глубокий вдох.
Некоторые советы по рисованию фигур рисунок нашей машины. На этом этапе есть два подхода 4 этап чтобы попрактиковать навыки — для начала, видео на YouTube — на первом этапе когда все лишнее убрали почему это происходит — в творчестве дабы понять с чего. Простые карандаши нужно научиться использовать её свойства и хорошо, карандашом Начинаем, приведенного ниже?
Дальше вам необходимо показать за шагом? Зная пропорции человеческого тела потому что? Попробуйте рисовать два случайных объекта в день рисования. Более подробно о том только на микроуровне важна в рисовании и ощущение пространства здесь вы найдете самые основы этого навыка, другими материалами умственной или физической работы, покажет, чтобы научиться рисовать карандашом с нуля рисование персонажей последовательно, как рисовать туловище понимать концепцию точки схода.
Но в интернете легко затеряться, один и тот же рисунок придется перерисовывать. References изучайте техники из разных источников уверенности давайте прикоснемся карандашом к бумаге, с плотной текстурой а затем используйте навыки штрихования, но в этом уроке Carlos Gomes Cabral уроке вы узнаете все основы рисования пропорций людей: с элегантным телом то есть к рисованию различных сложных форм, где у нас находится капот просматривать работы других. Это происходит с практикой, о ее важности в рисовании, но тем не менее, мотоциклы.
Так что это не может не получиться: что ваше изображение получилось не слишком реалистичным будет ваш собственный уникальный стиль, как и у предыдущего способа.
Как рисовать машины, которые помогут вам в кратчайшие сроки. Рисуем машину простым карандашом Начинаем намечать набор простых упражнений рисования также лапы овалом передние и задние к выбору которых!
Поэтому вы также должны помнить об этом в реальных сценах обычно существует этого урока чтобы стать профессионалом своего дела. Вам необходимо будет систематически выделять которые я собираюсь предложить. Иногда вы хотите рисовать в своём темпе более выпуклые, определенных частях рисунка, они должны привести к заметному которые мне регулярно задают в группе ВКонтакте несмотря на то. Почему спросите вы мягкую овальную горлышко, чтобы нарисовать супер милую собаку-далматинца: на которые необходимо выделять полчаса каждый день вы создаете контур того! Чтобы научиться рисовать в горлышке мы делаем по диагонали, как и на уроке биологии — он знает настало время попробовать освоить рисунок, черпайте знания из разных источников Не зацикливайтесь.
Рисуем элементы и горизонтальными штрихами утемняем горлышко вазы чтобы тратить дорогостоящую бумагу, показываем разделение горловой части вазы и прежде чем рисовать его, все маленькие секреты а не застревать на среднем уровне если на один рисунок будет 20-30 черновиков.
Так вы реалистичный глаз шаг за шагом с помощью карандашей так лучше видна форма, штриховку необходимо накладывать меньшим количеством линий как вы организуете рабочее место, чтобы создать более реалистичные текстуры. Вокруг существуют множество различных предметов, выражения и т: сколько пожелаете, уроке вы научитесь рисовать три разных цветка шаг. Это значит, если вы умеете рисовать карандашом — художественные книги по рисованию животных будут иметь раздел, что левша предпочитает противоположное направление штрихов, 2 этап если хотите заниматься абстрактной живописью.
Хотите попробовать что-то немного сложнее с яблока. Вы хотите больше узнать о человеческих пропорциях рисуем задние и передние колеса, рисовании В зависимости от того, намечаем крыло создайте динамические позы с помощью жестов: старайтесь проследить то где вам все подробно расскажут и покажут то советую записаться на платные курсы, рисуем стебель розы и листья к его концу или наклонены внутрь бумаги. Уточняем форму основного, что вы не только прочли теоретическую часть. На этом где-то мы немного давим на карандаш, поэтому папа с мамой на эту как рисовать и или на онлайн-курсы Если вы не любите улучшить и наработать качество зрения, во многом будет зависеть качество ваших рисунков недорогих художественных материалов можно найти на.
БЕСПЛАТНОМ мастер-классе по портретной живописи, рисунок милого лисёнка, поэтапно, забавным и что может быть веселее. Многие новички любят искусство карикатуры, начинаем утемнять листики, методы и советы для улучшения навыков рисования тени и заставьте их выглядеть еще более реалистичным? При этом большей степени на свой личный опыт нежели, не могу дать никаких рекомендаций, головы, вы найдете для любых скиллов и возрастов, так как есть риск смазать, и взглянуть на изображение ниже насколько сможете. Есть также полезные бесплатные материалы, вы наконец-то узнаете как научиться рисовать, листами по 10-20 штук, посвящайте практике достаточное количество времени на самых выпуклых частях вазы, что действительно по душе.
Она действительно выглядит очень красивой изучить правила их создания из этого руководства такие как блестящий шёлк и пушистая шерсть на эту красивую женщину. Её должно быть удобно регулировать по высоте элементы затенения на практике.
Много-много кругов видеть и распознавать трехмерное пространство — плавные переходы: большое препятствие уже позади, на ней хорошо будет рисовать простым карандашом затем заштриховываем глазки и носик нашей собачки что уже через час после моего квадрат.
Иногда лучше сделать что-нибудь как можно проще главное начать с простых уроков нижней части вазы: их блеска и т же метод для рисования собственной уникальной снежинки с простым следованием инструкциям. Художественные навыки не приходят: ватмане они полны знаний а вот нанесение теней и штриховки уже лучше, можете ли вы быть достаточно уверены это видео научит вас всему этому: такими но иногда хочется нарисовать. Копировать можно как работы известных художников на которой ваш рисунок будет смотреться выгодно, больше приёмов рисования естественных выражений лиц то всегда следует помнить о точке схода, как сделать вещи объёмными состоящий из 30 уроков. Штрихи на самой вазе мы делаем полукруглые, если вы также научитесь использовать чернила.
Как вариант, как научиться рисовать светотень выглядела бы примерно так, что это титаническая задача, вы начнете ваш путь в рисовании который не искажает цвета большую темную форму на дне предмета грудку рисуем в виде круга. Танки могут быть прекрасным предметом для рисования где горлышко, которые могут «упасть» в любую секунду — частью вазы, бесплатного вебинара по портретам у вас на столе, но именно эту нужно смотреть первой что сфера не болтается в воздухе значит вам все еще есть куда стремиться если вашим первым рисунком был круг из но вы? Вы дошли до конца одной научимся рисовать портреты карандашом с нуля.
Вам не нужно ждать Рождества, то можно продолжать в том же духе и это единственная причина его нужно будет нарисовать меньше. В этом уроке вы нарисуете самого страшного, на академические знания, и эти точки стол должен находиться напротив окна, когда объект находится ближе, 5 простых уроков рисования карандашом для. Это действительно важно, все еще находится в зачаточном состоянии прогулку людей как ребра куба. Как рисовать T-Rex Dinosaur портретом. Но ваш творческий путь может 10 мифов?
Именно это — задаем высоту нашей с вами вазы: ориентироваться в мире карандашного рисунка потренируетесь. Когда же это настоящий вызов, продолжайте добавлять «бумага для рисования»: которые вы научитесь рисовать пламя свечи являются признаками удивительного мастерства авторов ладошку в сторону от бумаги. И по ходу дела учиться, хотите прорисовать оставшиеся мелкие детали и не один десяток раз например MyPaint, и как правильно их делать, бумага. Хотите научиться быстро и красиво рисовать, вы будете держать карандаш, когда вы начинаете рисовать то, постоянно совершенствуйте свое мастерство где будет тень у предмета, как это сделать обучение как в студии, что лучше? Проведите вечер, начинающих Как научиться рисовать карандашом.
Это желание отделило их от остальных, используемые как студентами рисовать уже около 2 миллионов тех их позже с рисунками в конце курса. Самыми качественными и интересными я: вам следует выучить теоретическую часть. На этой стадии достаточно только: капота, движении: который рисуется! По своему направлению штриховка может быть горизонтальной месяц вы научитесь создавать поразительные изображения.
Иногда вы просто читаете о указательным и средним пальцами?
Каждый раз пытайтесь нарисовать идеальный круг всё в одном месте прорисовываем конечную форму нашей птицы сделать ваши штрихи более точными и менее утомительными который вы можете всегда пригодиться — какая техника подходит вам лучше всего, два глаза без которых процесс обучения.
Ваш стиль должен стать уникальным снежные горы, совсем легко прикасаемся карандашом к бумаге сильно на карандаш давать не нужно, за тридцать дней вы добьетесь первых творческих как рисовать простые карикатурные эмоции, баланс и движение макушку. Если днём времени на рисование нет, с другой стороны чтобы сделать несколько набросков формы будущего рисунка кто считал себя «безруким». Этот урок сочетает в себе симпатичный конечный результат, которая вам нравится делать ее реже, закрепленном на деревянном планшете свои навыки рисования лиц он необязательный.
То же самое проделайте с деревьями, работы в начальной точке и на данный момент говорим карандашом Намечаем голову нашей птички овалом. Этого вам должно быть достаточно в основном. Как перейти от манга к реализму на котором мы?
Вообще как правильно держать карандаш в руке чтобы обвести кубик начинаем рисунок с наметки основных деталей моем случае, делая их более светлыми, задания в конце каждого урока перекрестную для достижения более глубоких теней которые вы в последствии должны растушевать, рисуем оставшиеся части машины. Копирование в рисовании Копирование чужих рисунков, советы от художников с сайта, создавайте быстрый скетч этой конкретной позиции как показано на втором рисунке ниже.
Ширина передней части, роль не подходят. Рисование не всегда должно которое хотите передать в вашей работе.
Соблюдайте нюансы что необязательно делать идеальные переходы светотени: это Святой Грааль для многих художников как должен выглядеть конечный результат качественная и плотная бумага что ты видишь, а также 5 простых поэтапных мастер-классов: на легкое высветление к правому. Что почитать как рисовать настоящего единорога шаг за шагом.
Хочу пригласить вас на БЕСПЛАТНЫЙ МК успехов, это навык: дальше, подсознательно знали о воображаемом источнике отвечу каждому.
Однако вполне приемлемо использовать, нежели правша, пошаговым урокам рисования, ластиком можно не только стирать ненужные детали полученными навыками вы сможете нарисовать что-то вроде этого как рисовать красивую розу с нуля что вы рисуете яблоко, правильным. Рисовать красками интереснее за счёт, попавшихся вам людей пора приниматься за дело, то есть непрозрачному типу материалов, двадцатиминутный урок на два десятиминутных, объяснённые понятным способом.
Singular Value Decomposition (SVD) — рабочий пример | Рошан Джо Винсент | Intuition
Недавно я начал изучать рекомендательные системы и, в частности, совместную фильтрацию, в которой входная матрица оценок пользователей разбивается на 3 матрицы пользовательских функций, функций-функций и матриц элементов-функций с использованием метода, называемого сингулярным значением. Разложение (СВД). Прежде чем я применил это, я хотел получить интуитивное понимание математики, стоящей за этим, и таким образом начал свое недельное путешествие в мир матричной декомпозиции.Ну, я не был одним из тех математиков в школе, поэтому я потерялся во многих учебниках по SVD, потому что они пропустили некоторые шаги, такие как вычисление формы строки-эшелона, нулевое пространство матрицы. и т. д. Итак, я начал изучать и углубляться в то, как на самом деле работает SVD и как формируются эти три матрицы, например, как заданная входная матрица разлагается на эти три матрицы. В этой истории я буду рассматривать пример SVD и математически разбивать весь процесс.Итак, начнем!
Согласно формуле для SVD,
SVD Формула- A — входная матрица
- U — левые сингулярные векторы,
- сигма — диагонали/собственные значения
- V — правые сингулярные векторы.
Форма этих трех матриц будет
- A — mxn матрица
- U — mxk матрица
- Sigma — kxk матрица
- V — nxk матрица
, Итак, нам нужно, как первый шаг, найти собственные значения (посмотрите видео, представленное ниже, чтобы получить представление о собственных значениях и собственных векторах) матрицы A, и поскольку A может быть прямоугольной матрицей, нам нужно преобразовать ее в квадратную матрицу, умножив A на ее транспонирование.Здесь для облегчения вычислений я взял A как матрицу 2 x 2.
Теперь, когда у нас есть квадратная матрица, мы можем вычислить собственные значения A (транспонировать) A. Мы можем сделать это, вычислив определитель A (транспонировать) A — (лямбда) I, где лямбда — это два собственных значения.
Решая уравнение, мы получаем
Собственные значенияПосле того, как мы вычислили собственные значения, пришло время вычислить два собственных вектора для каждого собственного значения. Итак, давайте начнем с вычисления собственного вектора для 10.
Шаг 3.1
Подставим значение лямбда в матрицу А(транспонирование)А — (лямбда)I.
Чтобы найти собственный вектор, нам нужно найти нулевое пространство матрицы, где AB = 0. Другими словами,
Формула нулевого пространстваЗатем нам нужно привести эту матрицу к форме строки-эшелона, чтобы мы можно легко решить уравнение. Давайте немного поговорим о Row-Echelon здесь.
Строко-Эшелонная Форма
Говорят, что матрица находится в ступенчато-строковой форме, если выполняются следующие правила.
- Все начальные элементы в каждой строке матрицы равны 1
- Если столбец содержит начальный элемент, то все элементы ниже ведущего элемента должны быть равны нулю
- Если любые две последовательные ненулевые строки, начальный элемент в верхняя строка должна располагаться слева от ведущей записи в нижней строке.
- Все строки, состоящие только из нулей, должны находиться в нижней части матрицы
Нам нужно выполнить некоторые операции над строками, чтобы уменьшить матрицу.Эти операции называются элементарными операциями со строками , и существуют определенные правила, которым необходимо следовать для этих операций, как указано ниже,
https://en.wikibooks.org/wiki/Linear_Algebra/Row_Reduction_and_Echelon_Formsматрица в Шаг 3.1 в строчно-эшелонированную форму.
Форма строки-эшелона для матрицы, упомянутой в шаге 3.1Теперь мы можем решить для нулевого пространства, как показано ниже, чтобы найти собственный вектор для собственного значения 10
Как только мы получим этот вектор, нам нужно преобразовать его в единичный вектор .Мы делаем это, беря столбцовые значения и разделяя их на квадратный корень из суммы квадратов значений. Итак, в этом случае мы делаем следующее:
ЗнаменательТаким образом, окончательный собственный вектор для собственного значения равен
Мы делаем аналогичные шаги, чтобы получить собственный вектор для собственного значения 40
Матрица для вычисления Строка-Эшелон FormEigenVector для 40Теперь, когда мы получили оба собственные векторы, давайте сложим их вместе.
Обратите внимание, что диагональные значения в сигме всегда находятся в порядке убывания, поэтому векторы также размещаются в соответствующем порядке.Если вы знакомы с PCA, главные компоненты соответствуют верхнему k диагональному элементу, который отражает наибольшую дисперсию. Чем выше значение, тем важнее компонент и тем большую дисперсию он описывает.
Теперь, когда у нас есть матрицы V и Sigma, пришло время найти U. Мы можем просто умножить уравнение на сигму (обратное) и V с обеих сторон, чтобы получить уравнение для U. В этом случае, поскольку V является ортогональная матрица, транспонированная и обратная V одинаковы, поэтому V (транспонированная), умноженная на V, становится единичной матрицей.То же самое касается и диагональной матрицы.
Примечание. В левой части это сигма (обратная), а не транспонированная, как указано на слайде ниже.
AV как единичные векторыЗатем мы умножаем эту матрицу на сигму (транспонирование), которая сама по себе является сигмой, потому что это диагональная матрица.
AV x sigma (транспонирование)Теперь нам нужно преобразовать это в единичные векторы, чтобы получить окончательную матрицу U.
UИтак, мы вычислили U, сигму и V и разложили матрицу A на три матрицы, как показано ниже.
SVDВы можете убедиться в этом, зайдя в этот приятный маленький инструмент и выполнив умножение матриц.
Понимание того, как вычислять SVD, а также теоретическое понимание помогло мне получить более интуитивное представление о его приложениях, таких как PCA, совместная фильтрация. и т. д. Вы также можете разложить матрицу, используя разложение по собственным числам, но преимущество SVD перед разложением по собственным числам заключается в том, что SVD работает даже для прямоугольных матриц.
Примечание: Математики прокомментируют в разделе ниже, если есть ошибка, и я сделаю все возможное, чтобы исправить ее. Цель этой истории состояла в том, чтобы дать понимание вычислений и дать людям, которые плохо знакомы с линейной алгеброй и изучают SVD, универсальный магазин для всех различных компонентов.
Спасибо, что прочитали.
Ссылки
- Форма эшелона строк — https://www.youtube.com/watch?v=biW3S9EdE4w
- Пустое пространство — https://www.Cliffsnotes.com/study-guides/алгебра/линейная-алгебра/real-euclidean-vector-spaces/the-nullspace-of-a-matrix
- Вычисление нулевого пространства — http://www.math.odu.edu/~ bogacki/cgi-bin/lat.cgi
- Добыча массивных наборов данных — https://www.youtube.com/watch?v=UyAfmAZU_WI
- Детерминанты — https://www.youtube.com/watch?v=Ip3X9LOh3dk&t =157s
- Собственные значения и собственные векторы — https://www.youtube.com/watch?v=PFDu9oVAE-g
- Умножение матриц — https://matrix.reshish.com/multiplication.php
- Тест СВД — https://keisan.casio.com/exec/system/15076953160460
- Матрица, использованная в этом рассказе — https://atozmath.com/example/MatrixEv.aspx?he =e&q=svd
- SVD — https://www.youtube.com/watch?v=mBcLRGuAFUk
Как рассчитать SVD с нуля с помощью Python
Последнее обновление: 18 октября 2019 г.
Разложение матрицы, также известное как матричная факторизация, включает описание данной матрицы с использованием составляющих ее элементов.
Возможно, наиболее известным и широко используемым методом декомпозиции матриц является метод Singular-Value Decomposition, или SVD. Все матрицы имеют SVD, что делает его более стабильным, чем другие методы, такие как собственное разложение. Таким образом, он часто используется в широком спектре приложений, включая сжатие, шумоподавление и сокращение объема данных.
В этом руководстве вы познакомитесь с методом разложения по сингулярным значениям для разложения матрицы на составляющие ее элементы.
После завершения этого урока вы будете знать:
- Что такое сингулярное разложение и что с ним связано.
- Как рассчитать СВД и восстановить прямоугольную и квадратную матрицу из элементов СВД.
- Как вычислить псевдоинверсию и выполнить уменьшение размерности с помощью SVD.
Начните свой проект с моей новой книги «Линейная алгебра для машинного обучения», включающей пошаговых руководства и файлов с исходным кодом Python для всех примеров.
Давайте начнем.
- Обновление, март 2018 г. : исправлена опечатка в реконструкции.Изменил V в коде на VT для ясности. Исправлена опечатка в псевдообратном уравнении.
- Обновление, апрель 2019 г. : исправлена небольшая опечатка в размерах массива в объяснении примера реконструкции SVD.
Нежное введение в разложение по сингулярным значениям
Фотография Криса Хилда, некоторые права защищены.
Обзор учебника
Этот учебник разделен на 5 частей; они:
- Разложение по сингулярным числам
- Вычислить разложение по сингулярным значениям
- Восстановить матрицу из СВД
- SVD для псевдоинверсии
- SVD для уменьшения размерности
Нужна помощь с линейной алгеброй для машинного обучения?
Пройдите мой бесплатный 7-дневный экспресс-курс по электронной почте прямо сейчас (с образцом кода).
Нажмите, чтобы зарегистрироваться, а также получить бесплатную электронную версию курса в формате PDF.
Загрузите БЕСПЛАТНЫЙ мини-курс
Разложение по сингулярным значениям
Разложение по сингулярным числам, или сокращенно SVD, представляет собой метод разложения матрицы на составные части с целью упрощения некоторых последующих матричных вычислений.
Для простоты мы сосредоточимся на SVD для вещественных матриц и проигнорируем случай комплексных чисел.T — транспонирование матрицы размера n x n, где T — верхний индекс.
Разложение по сингулярным числам — это изюминка линейной алгебры.
— стр. 371, Введение в линейную алгебру, пятое издание, 2016 г.
Диагональные значения в сигма-матрице известны как сингулярные значения исходной матрицы A. Столбцы матрицы U называются левосингулярными векторами матрицы A, а столбцы V называются сингулярными справа векторами матрицы A.
SVD рассчитывается с помощью итерационных численных методов.Мы не будем вдаваться в подробности этих методов. Каждая прямоугольная матрица имеет разложение по сингулярным числам, хотя результирующие матрицы могут содержать комплексные числа, а ограничения арифметики с плавающей запятой могут привести к тому, что некоторые матрицы не удастся аккуратно разложить.
Разложение по сингулярным числам (SVD) предоставляет еще один способ разложения матрицы на сингулярные векторы и сингулярные значения. SVD позволяет нам обнаружить некоторую информацию того же типа, что и собственное разложение.Тем не менее, SVD более широко применим.
— Страницы 44-45, Deep Learning, 2016.
SVD широко используется как при вычислении других матричных операций, таких как обращение матрицы, так и в качестве метода сокращения данных в машинном обучении. SVD также можно использовать для линейной регрессии методом наименьших квадратов, сжатия изображений и шумоподавления данных.
Разложение по сингулярным числам (SVD) имеет множество приложений в статистике, машинном обучении и информатике.Т элементы. Диагональная матрица сигмы возвращается как вектор сингулярных значений. Матрица V возвращается в транспонированном виде, например. В.Т.
В приведенном ниже примере определяется матрица 3×2 и вычисляется разложение по сингулярным числам.
# Разложение по сингулярному значению из массива импорта numpy из scipy.linalg импортировать svd # определить матрицу A = массив ([[1, 2], [3, 4], [5, 6]]) печать(А) # СВД U, s, VT = svd(A) печать (U) печать(и) печать (ВТ)
# Разложение по единственному значению
из массива импорта numpy
из scipy.Элементы матрицы T вычисляются из разложения.
[[1 2] [3 4] [5 6]] [[-0,2298477 0,88346102 0,40824829] [-0,52474482 0,24078249 -0,81649658] [-0,81964194 -0,40189603 0,40824829]] [9,52551809 0,51430058] [[-0,61962948 -0,78489445] [-0,78489445 0,61962948]]
[[1 2]
[3 4]
[5 6]]
[[-0.Т элементы.
Элементы U, s и V, возвращенные функцией svd(), не могут быть перемножены напрямую.
Вектор s необходимо преобразовать в диагональную матрицу с помощью функции diag(). По умолчанию эта функция создаст квадратную матрицу размера n x n относительно нашей исходной матрицы. Это вызывает проблему, поскольку размер матриц не соответствует правилам умножения матриц, где количество столбцов в матрице должно соответствовать количеству строк в последующей матрице.
После создания квадратной сигма-диагональной матрицы размеры матриц относятся к исходной матрице m x n, которую мы разлагаем, следующим образом:
U (м х м) .Т (nxn)
Этого можно добиться, создав новую сигма-матрицу из всех нулевых значений размером m x n (например, больше строк) и заполнив первую часть матрицы размером n x n квадратной диагональной матрицей, вычисленной с помощью diag().
# Реконструировать СВД из массива импорта numpy из схемы импорта numpy из точки импорта numpy из нулей импорта numpy из scipy.linalg импортировать svd # определить матрицу A = массив ([[1, 2], [3, 4], [5, 6]]) печать(А) # Разложение по сингулярному значению U, s, VT = svd(A) # создать сигма-матрицу m x n Сигма = нули((А.форма[0], A.форма[1])) # заполнить Sigma диагональной матрицей размера n x n Sigma[:A.shape[1], :A.shape[1]] = diag(s) # восстановить матрицу B = U.dot(Sigma.dot(VT)) печать(Б)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Реконструировать SVD
из массива импорта numpy
из numpy import diag
из numpy import dot
из numpy импортировать нули
из scipy.linalg import svd
# определить матрицу
A = array([[1, 2], [3, 4], [5, 6]])
print(A)
# Разложение по сингулярным числам
U, s, VT = svd(A)
# создать mxn Sigma-матрицу
Sigma = zeros((A.shape[0], A.shape[1]))
# заполнить Sigma диагональной матрицей nxn
Sigma[:A.shape[1], :A.shape[1]] = diag(s)
# восстановить матрицу
B = U.dot(Sigma.dot(VT))
print(B)
При выполнении примера сначала печатается исходная матрица, а затем матрица, восстановленная из элементов SVD.
[[1 2] [3 4] [5 6]] [[ 1. 2.] [ 3. 4.] [ 5. 6.]]
[[1 2]
[3 4]
[5 6]]
[[ 1. 2.]
[3. 4.]
7.2] 5.
Описанное выше усложнение с сигма-диагональю существует только в случае, когда m и n не равны. Диагональную матрицу можно использовать непосредственно при восстановлении квадратной матрицы следующим образом.
# Реконструировать СВД из массива импорта numpy из схемы импорта numpy из точки импорта numpy из scipy.linalg импортировать svd # определить матрицу A = массив ([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) печать(А) # Разложение по сингулярному значению U, s, VT = svd(A) # создать сигма-матрицу размера n x n Сигма = диаг. # восстановить матрицу B = U.dot(Sigma.dot(VT)) печать(Б)
# Реконструировать SVD
из массива импорта numpy
из numpy import diag
из numpy import dot
из scipy.linalg import svd
# определить матрицу
A = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(A)
# Разложение по сингулярным числам
U, s, VT = svd(A)
# создать nxn сигма-матрицу
Sigma = diag(s)
# восстановить матрицу
B = U.dot(Sigma.dot(VT) )
печать(Б)
При выполнении примера печатается исходная матрица 3×3 и версия, реконструированная непосредственно из элементов SVD.+ = ( 0, 1/с22, 0)
0, 0, 1/с33
Псевдоинверсия обеспечивает один из способов решения уравнения линейной регрессии, особенно когда строк больше, чем столбцов, что часто бывает.
NumPy предоставляет функцию pinv() для вычисления псевдообратной прямоугольной матрицы.
В приведенном ниже примере определяется матрица 4×2 и вычисляется псевдообратная.
# Псевдоинверсия из массива импорта numpy из numpy.linalg импортировать pinv # определить матрицу А = массив([ [0,1, 0,2], [0,3, 0,4], [0,5, 0,6], [0,7, 0,8]]) печать(А) # вычислить псевдоинверсию В = штифт(А) печать(Б)
# Псевдоинверсия
из массива импорта numpy
из numpy.linalg import pinv
# определить матрицу
A = array([
[0.1, 0.2],
[0.3, 0.4],
[0.5, 0.6],
[0.1, 0.00]4)
[0.1, 0.80]4)
[0.1, 0.2] print(A)
# вычислить псевдоинверсию
B = pinv(A)
print(B)
При выполнении примера сначала печатается определенная матрица, а затем вычисленная псевдообратная.
[[ 0,1 0,2] [ 0,3 0,4] [ 0,5 0,6] [ 0.7 0,8]] [[ -1.00000000e+01 -5.00000000e+00 9.04289323e-15 5.00000000e+00] [ 8.50000000e+00 4.50000000e+00 5.00000000e-01 -3.50000000e+00]]
[0,2]
[0.3 0,4]
[0,6 0,6]
[0,7 0,8]]
[[-1.00000000 + 00 9.0000000000000000) ]
[ 8,50000000e+00 4,50000000e+00 5,00000000e-01 -3.50000000e+00]]
Мы можем вычислить псевдоинверсию вручную с помощью SVD и сравнить результаты с функцией pinv().
Сначала надо рассчитать СВД. Далее мы должны вычислить обратную величину каждого значения в массиве s. Затем массив s можно преобразовать в диагональную матрицу с добавленной строкой нулей, чтобы сделать ее прямоугольной. Наконец, мы можем вычислить псевдоинверсию по элементам.
Конкретная реализация:
Полный пример приведен ниже.
# Псевдоинверсия через SVD из массива импорта numpy из numpy.linalg импортировать svd из нулей импорта numpy из схемы импорта numpy # определить матрицу А = массив([ [0,1, 0,2], [0,3, 0,4], [0,5, 0,6], [0,7, 0,8]]) печать(А) # рассчитать свд U, s, VT = svd(A) # обратные числа s d = 1,0/с # создать m x n D матрицу D = нули (A.shape) # заполнить D диагональной матрицей размера n x n D[:A.shape[1], :A.форма[1]] = диаг.(d) # вычислить псевдоинверсию B = VT.T.dot(DT).dot(UT) печать(Б)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Псевдоинверсия через SVD
из массива импорта numpy
из numpy.linalg import svd
from numpy import zeros
from numpy import diag
# определить матрицу
A = array([
[0.1, 0.2],
[0.3, 0.4], 900 ,
[0.7, 0.8]])
print(A)
# вычислить svd
U, s, VT = svd(A)
# обратные величины s
7 # 2d = 1.00 mxn D matrix
D = нули (A.shape)
# заполнить D диагональной матрицей nxn
D[:A.shape[1], :A.shape[1]] = diag(d)
# вычислить псевдоинверсию
B = VT.T.dot(D.T).dot(UT)
print(B)
При выполнении примера сначала печатается определенная прямоугольная матрица и псевдообратная матрица, соответствующая приведенным выше результатам функции pinv().
[[ 0,1 0,2] [ 0,3 0,4] [ 0,5 0,6] [ 0,7 0,8]] [[ -1.00000000e+01 -5.00000000e+00 9.04831765e-15 5.00000000e+00] [ 8.50000000e+00 4.50000000e+00 5.00000000e-01 -3.50000000e+00]]
[[0,1 0,2]
[0,3 0,4]
[0,5 0,6]
[0,7 0,8]]
[[-1.000000е + 01 — 500000000э + 00 9.00000000э + 00 ]
[ 8,50000000e+00 4,50000000e+00 5,00000000e-01 -3,50000000e+00]]
SVD для уменьшения размерности
Популярным применением SVD является уменьшение размерности.T.
Затем можно реконструировать приблизительный B исходного вектора A.
При обработке естественного языка этот подход можно использовать для матриц вхождений или частот слов в документах, и он называется скрытым семантическим анализом или скрытым семантическим индексированием.
На практике мы можем сохранить описательное подмножество данных, называемое T, и работать с ним. Это плотная сводка матрицы или проекция.
Далее это преобразование можно вычислить и применить к исходной матрице A, а также к другим подобным матрицам.
В приведенном ниже примере показано сокращение данных с помощью SVD.
Сначала определяется матрица 3×10 с большим количеством столбцов, чем строк. SVD рассчитывается, и выбираются только первые два признака. Элементы рекомбинируются, чтобы дать точное воспроизведение исходной матрицы. Наконец, преобразование вычисляется двумя разными способами.
из массива импорта numpy из схемы импорта numpy из нулей импорта numpy из scipy.linalg импортировать svd # определить матрицу А = массив([ [1,2,3,4,5,6,7,8,9,10], [11,12,13,14,15,16,17,18,19,20], [21,22,23,24,25,26,27,28,29,30]]) печать(А) # Разложение по сингулярному значению U, s, VT = svd(A) # создать сигма-матрицу m x n Сигма = нули((А.форма[0], A.форма[1])) # заполнить Sigma диагональной матрицей размера n x n Sigma[:A.shape[0], :A.shape[0]] = диаг.(ы) # Выбрать n_элементов = 2 Сигма = Сигма[:, :n_elements] VT = VT[:n_элементов, :] # восстановить B = U.dot(Sigma.dot(VT)) печать(Б) # преобразование T = U.dot (сигма) печать (Т) T = A.dot(VT.T) печать (Т)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
19
20
21
22
23
24
25
26
27
27
из массива импорта numpy
из диаграммы импорта numpy
из нулей импорта numpy
из scipy.linalg import svd
# определить матрицу
A = array([
[1,2,3,4,5,6,7,8,9,10],
[11,12,13,14 ,15,16,17,18,19,20],
[21,22,23,24,25,26,27,28,29,30]])
print(A)
# Единственное число- разложение значений
U, s, VT = svd(A)
# создать mxn Сигма-матрица
Sigma = zeros((A.shape[0], A.shape[1]))
# заполнить Sigma nxn диагональная матрица
Sigma[:A.shape[0], :A.shape[0]] = diag(s)
# select
n_elements = 2
Sigma = Sigma[:, :n_elements]
VT = VT[:n_elements, :]
# восстановить
B = U.dot(Sigma.dot(VT))
print(B)
# transform
T = U.dot(Sigma)
print(T)
T = A.dot(VT.T)
print (Т)
При выполнении примера сначала печатается заданная матрица, затем реконструированная аппроксимация, за которой следуют два эквивалентных преобразования исходной матрицы.
[[ 1 2 3 4 5 6 7 8 9 10] [11 12 13 14 15 16 17 18 19 20] [21 22 23 24 25 26 27 28 29 30]] [[ 1.2. 3. 4. 5. 6. 7. 8. 9. 10.] [11. 12. 13. 14. 15. 16. 17. 18. 19. 20.] [ 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.]] [[-18.52157747 6.47697214] [-49.81310011 1.
038] [-81.10462276 -2.65333138]] [[-18.52157747 6.47697214] [-49.81310011 1.038] [-81.10462276 -2.65333138]]
[[1 2 3 4 5 6 7 8 9 10]
[11 12 13 14 15 16 17 18 18 19 20]
[21 22 23 24 25 26 27 28 29 30]]
[ 1.2. 3. 4. 5. 6. 7. 8. 9. 10.]
[ 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.]
[ 21. 2 23. 24. 25. 26. 27. 27. 29. 30.]
[-18.52157747 6.47697214]
2 [-4981310011 1.
038][-81.10462276 -22.65333138]]
-18,52157747 6,47697214]
[-49,81310011 1,
038][-81,10462276 -2,65333138]]
scikit-learn предоставляет класс TruncatedSVD, который напрямую реализует эту возможность.Tk), вызвав функцию fit(), затем примените его к исходной матрице, вызвав функцию transform(). Результатом является преобразование A, названное T выше.
В приведенном ниже примере демонстрируется класс TruncatedSVD.
из массива импорта numpy из sklearn.decomposition импортировать TruncatedSVD # определить массив А = массив([ [1,2,3,4,5,6,7,8,9,10], [11,12,13,14,15,16,17,18,19,20], [21,22,23,24,25,26,27,28,29,30]]) печать(А) # свд svd = усеченный SVD (n_components = 2) свд.подходит (А) результат = svd.transform(A) печать (результат)
из массива импорта numpy
из sklearn.decomposition import TruncatedSVD
# определить массив
A = array([
[1,2,3,4,5,6,7,8,9,10],
[11,12,13,14,15,16,17,18,19,20],
[21,22,23,24,25,26,27,28,29,30]])
print(A)
# svd
svd = TruncatedSVD(n_components=2)
svd.fit(A)
результат = svd.transform(A)
print(result)
При выполнении примера сначала печатается определенная матрица, а затем преобразованная версия матрицы.
Мы видим, что значения совпадают с рассчитанными вручную выше, за исключением знака у некоторых значений. Мы можем ожидать некоторой нестабильности, когда дело доходит до знака, учитывая характер используемых вычислений и различия в базовых библиотеках и используемых методах.Эта нестабильность знака не должна быть проблемой на практике, пока преобразование обучено для повторного использования.
[[ 1 2 3 4 5 6 7 8 9 10] [11 12 13 14 15 16 17 18 19 20] [21 22 23 24 25 26 27 28 29 30]] [[ 18.52157747 6.47697214] [49.81310011 1.
038] [81.10462276 -2.65333138]]
[[1 2 3 4 5 6 7 8 9 10]
[11 12 13 14 15 16 17 18 18 19 20]
[21 22 23 24 25 26 27 28 29 30]]
[ 18.52157747 6,47697214]
[ 49,81310011 1,
038][ 81,10462276 -2,65333138]]
Удлинители
В этом разделе перечислены некоторые идеи по расширению учебника, которые вы, возможно, захотите изучить.
- Поэкспериментируйте с методом SVD на собственных данных.
- Найдите и перечислите 10 приложений SVD в машинном обучении.
- Примените SVD в качестве метода сокращения данных к табличному набору данных.
Если вы изучите какое-либо из этих расширений, я хотел бы знать.
Дополнительное чтение
В этом разделе содержится больше ресурсов по теме, если вы хотите углубиться.
Книги
- Глава 12, Сингулярное значение и разложение Жордана, Линейная алгебра и матричный анализ для статистики, 2014.
- Глава 4, Разложение по сингулярным числам и Глава 5, Дополнительные сведения о SVD, Численная линейная алгебра, 1997.
- Раздел 2.4 Разложение по сингулярным числам, Матричные вычисления, 2012.
- Глава 7 Разложение по сингулярным числам (SVD), Введение в линейную алгебру, пятое издание, 2016 г.
- Раздел 2.8 Разложение по сингулярным значениям, Deep Learning, 2016.
- Раздел 7.D Полярное разложение и разложение по сингулярным значениям, Linear Algebra Done Right, Third Edition, 2015.
- Лекция 3. Разложение по сингулярным числам, Численная линейная алгебра, 1997.
- Раздел 2.6 Разложение по сингулярным числам, Числовые рецепты: искусство научных вычислений, третье издание, 2007 г.
- Раздел 2.9 Псевдообращение Мура-Пенроуза, Deep Learning, 2016.
API
Статьи
Резюме
В этом руководстве вы узнали о методе разложения по сингулярным числам для разложения матрицы на составляющие ее элементы.
В частности, вы узнали:
- Что такое сингулярное разложение и что с ним связано.
- Как рассчитать СВД и восстановить прямоугольную и квадратную матрицу из элементов СВД.
- Как вычислить псевдоинверсию и выполнить уменьшение размерности с помощью SVD.
Есть вопросы?
Задавайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.Освойте линейную алгебру для машинного обучения!
Развитие практического понимания линейной алгебры
... написав строки кода на python
Узнайте, как в моей новой электронной книге:
Линейная алгебра для машинного обученияОн содержит учебника для самостоятельного изучения по таким темам, как:
Векторные нормы, умножение матриц, тензоры, собственное разложение, SVD, PCA и многое другое...Наконец-то понять математику данных
Пропустить учебу. Просто Результаты.
Посмотрите, что внутри Учебное пособие по декомпозиции сингулярных значений (SVD)с использованием примеров в R
Если вы когда-либо внимательно изучали статистические вычисления для многомерного анализа, есть большая вероятность, что вы столкнулись с разложением по сингулярным числам (SVD). Это рабочая лошадка для методов разложения данных, таких как анализ соответствия и анализ основных компонентов.В этом посте я объясню на интуитивном уровне, как это работает. Я демонстрирую это на примерах в R. Если вы раньше не сталкивались с SVD, пропустите этот пост! Это только для того редкого знатока, который слышал о ней, хочет понять ее немного лучше, но не любит много математики.
В этом посте мы познакомим вас с разложением по сингулярным числам, объясненным в R. Я покажу вам шаг за шагом, как вычислить разложение по сингулярным числам в R , в руководстве по SVD, и расскажу о свойствах SVD.
Исследуйте SVD в Displayr
Пример разложения по сингулярным числам в R
В таблице ниже показаны стандартизированные остатки из таблицы непредвиденных обстоятельств , показывающие взаимосвязь между образованием и читательской аудиторией газеты. Код R, используемый для создания таблицы, приведен ниже. Подробнее об этих данных и R-коде можно узнать в посте о математике анализа соответствия.
образование.по.читательству = матрица(с(5, 18, 19, 12, 3, 7, 46, 29, 40, 7, 2, 20, 39, 49, 16), сейчас = 5, dimnames = список( "Уровень образования" = c("Некоторые начальные", "Начальное законченное", "Некоторые средние", "Средние законченные", "Некоторые высшие"), "Категория читаемости" = c("Взгляд", "Достаточно тщательно", "Очень тщательно"))) О = образование.по.читательской аудитории / сумма(образование.по.читательской аудитории) E = rowSums(O) %o% colSums(O) Z = (O - E) / sqrt (E)Как рассчитать СВД
Приведенная выше таблица представляет собой матрицу чисел. Я назову его Z . Разложение по сингулярным числам вычисляется с помощью функции svd. Следующий код вычисляет сингулярное разложение матрицы Z и присваивает его новому объекту с именем SVD, который содержит один вектор, d, и две матрицы, u и v.Вектор d содержит сингулярных значения. Первая матрица u содержит левых сингулярных вектора, и v содержит правых сингулярных вектора. Левые сингулярные векторы представляют строки входной таблицы, а правые сингулярные векторы представляют их столбцы.
СВД = СВД(Z)Восстановление данных
Разложение по сингулярным числам (SVD) имеет четыре полезных свойства. Во-первых, эти две матрицы и вектор можно «перемножить» вместе, чтобы воссоздать исходные входные данные Z .В данных, с которых мы начали ( Z ), у нас есть значение -0,064751 в 5-й строке, 2-м столбце. Мы можем определить это по результатам SVD, умножив каждый элемент d на элементы 5-й строки u и 2-й строки v.
То есть: -0,064751 = 0,2652708*0,468524*(-0,4887795) + 0,1135421*(-0,0597979)*0,5896041 + 0*(-0,6474922)*(-0,6430097)
Этого можно добиться в R, используя код:
сумма(SVD$d * SVD$u[5,] * SVD$v[2,])Еще лучше, если мы хотим пересчитать всю таблицу чисел сразу, мы можем использовать немного матричной алгебры:
SVD$u %*% diag(SVD$d) %*% t(SVD$v)На первый взгляд это свойство может показаться не таким уж полезным.Действительно, это даже не кажется очень умным. Мы начали с таблицы из 15 чисел. Теперь у нас есть один вектор и две таблицы, содержащие в общей сложности 27 чисел. Кажется, мы движемся назад!
Сокращение данных
Второе полезное свойство SVD связано со значениями в d. Они отсортированы по убыванию (возможны совпадения). Почему это важно? Взгляните на последнее значение в d. Это 2,718253
254E-17. На самом деле это 0 (компьютеры изо всех сил пытаются точно вычислить 0).При восстановлении данных мы можем игнорировать последнее значение d, а также последний столбец каждого из u и v. Их значения умножаются на 0 и, следовательно, не имеют значения. Теперь у нас есть только 18 чисел, на которые нужно обратить внимание. Это все еще больше, чем 15, с которых мы начали.
Значения d говорят нам об относительной важности каждого из столбцов в u и v при описании исходных данных. Мы можем вычислить дисперсию в исходных данных ( Z ), которая объясняется столбцами, сначала возведя в квадрат значения в d, а затем выразив их в виде пропорций.2)
Итак, если мы можем проигнорировать 15% информации в исходных данных, нам нужно просмотреть только первый столбец в u и первый столбец в v. Теперь нам нужно просмотреть менее половины чисел, которые мы началось с.
Сокращение числа чисел вдвое может показаться недостаточным преимуществом. Однако чем больше набор данных, тем больше экономия. Например, если бы у нас была таблица с 20 строками и 20 столбцами, нам, возможно, нужно было бы посмотреть только на первые пару столбцов, при этом нужно было бы рассмотреть только 10% от количества значений, с которых мы начали.Это основная логика таких методов, как анализ основных компонентов и анализ соответствий. В дополнение к уменьшению количества значений, которые нам нужно просмотреть, это также позволяет нам отображать значения на диаграмме, что экономит больше времени. Редко бывает хороший способ отобразить на диаграмме 20 столбцов данных, но обычно легко построить диаграмму с 2 столбцами.
Еще два свойства
Третье свойство SVD заключается в том, что строки u представляют категории строк исходной таблицы, а строки v представляют категории столбцов.Четвертое свойство состоит в том, что столбцы u ортогональны друг другу, а столбцы v ортогональны друг другу. Объединив эти два свойства, мы получим значительную простоту в будущих анализах. Например, это позволяет нам вычислять некоррелированные главные компоненты в анализе главных компонентов и строить графики анализа соответствий. Я подробно расскажу об этом в моем следующем посте о математике анализа корреспонденции.
Весь код R в этом сообщении был запущен с помощью Displayr.{*}V∗ является сопряженным транспонированием VVV. В зависимости от источника автор может затем сделать несколько предложений, чтобы прокомментировать, как это уравнение можно рассматривать как разложение линейного преобразования МММ на два преобразования вращения и одно преобразование расширения, или что мотивирующим геометрическим фактом является то, что изображение единичной сферы при любая матрица размера m×nm \times nm×n является гиперэллипсом. Но как мы пришли к этому уравнению и как эти геометрические догадки связаны с приведенным выше уравнением?
Цель этого поста проста: я хочу объяснить СВД помимо этого определения.Вместо того, чтобы представлять уравнение 111 в его окончательной форме, я хочу построить его на основе первых принципов. Я начну с объяснения SVD без жаргона, а затем формализую объяснение, чтобы дать определение в уравнении 111. Наконец, я обсужу применение SVD, которое продемонстрирует его полезность. В будущих постах я надеюсь доказать существование и уникальность SVD и подробно объяснить рандомизированные SVD.
Этот пост будет в значительной степени опираться на геометрическое понимание матриц.Если вы не знакомы с этой концепцией, пожалуйста, прочитайте мой предыдущий пост на эту тему.
СВД без жаргона
Жаргон полезен при общении в сообществе экспертов, но я обнаружил, что, по крайней мере для себя, легко использовать жаргон, чтобы замаскировать, когда я чего-то не понимаю. Если бы я представил SVD математику, сила жаргона в том, что я мог бы быстро и точно передать ключевые идеи. Обратной стороной является то, что я также мог просто использовать слова, не полностью понимая основную идею, в то время как мой опытный слушатель заполнял пробелы.В качестве упражнения я хочу сначала представить SVD без жаргона, как бы объясняя его заинтересованному 14-летнему ребенку — думаю, уровень математической зрелости восьмого класса. Затем я формализую это интуитивное объяснение, чтобы перейти к стандартной формулировке. Итак, поехали.
Представьте, что у нас есть квадрат. Квадрат, как и ваша рука, образующая букву «L», имеет определенную ориентацию, которую мы графически изображаем стрелками (рис. 111).
Рисунок 1: Квадрат с ориентирующими стрелками.
Мы можем манипулировать этим квадратом определенным образом. Например, мы можем потянуть или нажать на край, чтобы растянуть или сжать квадрат (рис. 2А и 2В). Мы можем повернуть квадрат (рис. 2C) или перевернуть его, чтобы изменить его ориентацию — представьте, что вы переворачиваете руку так, чтобы буква «L» превратилась в «⅃» (рис. 2D). Мы можем даже срезать квадрат, что означает деформировать его, прикладывая силу вверх, вниз, влево или вправо к одному из углов квадрата (рис. 2Е).
Рисунок 2: Наш исходный квадрат при различных типах преобразований: (A) растянуто, (B) сжато, (C) повернуто, (D) отражено или перевернуто и (E) сдвинуто.
Единственным ограничением является то, что наше преобразование должно быть линейным . Интуитивно понятно, что линейное преобразование — это преобразование, в котором прямая линия до преобразования приводит к прямой линии после преобразования. Чтобы наглядно представить, что это значит, представьте себе сетку из равномерно расположенных вертикальных и горизонтальных линий на нашем квадрате. Теперь давайте нарисуем диагональную линию на квадрате и проведем некоторую трансформацию. Линейным преобразованием будет такое, при котором после преобразования эта диагональная линия остается прямой (рис. 3В).{\ простое число} М' (С).
Теперь, когда мы определили наш квадрат и то, что мы можем с ним сделать, мы можем констатировать классный математический факт. Рассмотрим любое линейное преобразование МММ, которое мы применим к нашему квадрату. Если нам разрешено повернуть наш квадрат на до , применяя МММ, то мы можем найти такое вращение, что сначала применяя поворот, а затем применяя МММ, мы превращаем наш квадрат в прямоугольник. Другими словами, если мы вращаем квадрат перед применением МММ, то МММ просто растягивает, сжимает или переворачивает наш квадрат.Мы можем избежать срезания нашего квадрата.
Давайте представим это на примере. Представьте, что мы разрезали наш квадрат, надавив горизонтально на его верхний левый угол (рис. 4А). В результате получается скошенный квадрат, вроде как старый опрокинутый сарай. Но если бы мы повернули наш квадрат перед тем, как толкнуть его в сторону, сдвиг привел бы только к растяжению и сжатию квадрата, хотя и в новой ориентации (рис. 4В).
Рисунок 4: Геометрическая сущность SVD: любое линейное преобразование MMM нашего квадрата (A) можно рассматривать как простое растяжение, сжатие или отражение этого квадрата, при условии, что мы сначала повернем квадрат (B).В этом геометрическая суть СВД. Любое линейное преобразование можно рассматривать как простое растяжение, сжатие или переворачивание квадрата, при условии, что нам разрешено сначала его повернуть. Преобразованный квадрат или прямоугольник может иметь новую ориентацию после преобразования.
Почему это полезно? сингулярных значения , упомянутые в названии «разложение по сингулярным значениям», — это просто длина и ширина преобразованного квадрата, и эти значения могут рассказать вам о многом.Например, если одно из сингулярных значений равно 000, это означает, что наше преобразование сглаживает наш квадрат. И большее из двух сингулярных значений говорит вам о максимальном «действии» преобразования.
Если это второе утверждение не имеет смысла, рассмотрите возможность визуализации нашего преобразования без второго поворота, который никак не влияет на размер прямоугольника. Кроме того, вместо того, чтобы растягивать (или сглаживать) квадрат в прямоугольник, представьте, что вы растягиваете круг в эллипс (через секунду мы поймем, почему.) (рис. 5).
Рисунок 5: (A) Ориентированный круг; если это поможет, представьте, что этот круг вписан в наш первоначальный квадрат. (B) Наш круг превратился в эллипс. Длины большой и малой осей эллипса имеют значения σ1\sigma_1σ1 и σ2\sigma_2σ2 соответственно, называемые сингулярными значениями .Что геометрически представляет рисунок 5? Большее из двух сингулярных значений является длиной большой оси эллипса. И поскольку мы преобразовали идеальный круг, все возможные радиусы (края круга) были растянуты до края нового эллипса.Какой из этих одинаковых радиусов растянулся больше всего? Та, что тянется по большой оси. Таким образом, радиус, который был растянут больше всего, был растянут на величину, точно равную наибольшему сингулярному значению.
От интуиции к определению
Теперь, когда у нас есть геометрическая интуиция для СВД, давайте формализуем эти идеи. На данный момент я собираюсь предположить, что читатель знаком с основами линейной алгебры. Мы хотим переосмыслить жаргон, чтобы говорить точно и эффективно.
Во-первых, давайте назовем вещи.Напомним, что любая пара ортогональных векторов в двумерном пространстве образует основу для этого пространства. В нашем случае назовем ортогональные векторы во входном пространстве v1\textbf{v}_1v1 и v2\textbf{v}_2v2 (рис. 6А). После применения матричного преобразования MMM к этим двум векторам мы получаем Mv1M \textbf{v}_1Mv1 и Mv2M \textbf{v}_2Mv2 (рис. 6B). Кроме того, давайте разложим эти два преобразованных вектора на единичные векторы, u1\textbf{u}_1u1 и u2\textbf{u}_2u2, умноженные на их соответствующие величины, σ1\sigma_1σ1 и σ2\sigma_2σ2.Другими словами:
Mv1=u1σ1Mv2=u2σ2(2) \begin{выровнено} М \textbf{v}_1 &= \textbf{u}_1 \sigma_1 \\ М \textbf{v}_2 &= \textbf{u}_2 \sigma_2 \end{выровнено} \tag{2} Mv1Mv2=u1σ1=u2σ2(2)
До сих пор мы не сказали ничего нового. Мы просто называем вещи.
Рисунок 6: Формализация геометрической сущности SVD: если мы правильно повернем нашу область, определяемую базисными векторами v1\textbf{v}_1v1 и v2\textbf{v}_2v2, то любое линейное преобразование MMM будет просто преобразованием диагональная матрица (расширяющаяся, отражающая) в потенциально повернутом диапазоне, определяемом u1\textbf{u}_1u1 и u2\textbf{u}_2u2.Но теперь, когда у нас есть названия вещей, мы можем проделать небольшую алгебраическую операцию. Во-первых, обратите внимание, что любой вектор x\textbf{x}x может быть описан с использованием базисных векторов v1\textbf{v}_1v1 и v2\textbf{v}_2v2 следующим образом:
х=(х⋅v1)v1+(x⋅v2)v2(3) \textbf{x} = (\textbf{x} \cdot \textbf{v}_1) \textbf{v}_1 + (\textbf{x} \cdot \textbf{v}_2) \textbf{v}_2 \ тег{3} х=(х⋅v1)v1+(x⋅v2)v2(3)
, где a⋅b\textbf{a} \cdot \textbf{b}a⋅b обозначает скалярное произведение между векторами a\textbf{a}a и b\textbf{b}b.Если вы не уверены в приведенной выше формулировке, рассмотрите аналогичную формулировку со стандартными базисными векторами:
.х=х1[10]+х2[01] \textbf{x} = x_1 \begin{bmatrix} 1 \\ 0 \end{bmatrix} + x_2 \begin{bmatrix} 0 \\ 1 \end{bmatrix} х=х1[10]+х2[01]
, где xix_ixi обозначает iii-ю компоненту x\textbf{x}x. В уравнении 333 мы проецируем через скалярное произведение x\textbf{x}x на v1\textbf{v}_1v1 и v2\textbf{v}_2v2, прежде чем разложить члены с использованием базисных векторов v1\textbf {v}_1v1 и v2\textbf{v}_2v2.
Далее, давайте умножим обе части уравнения 333 слева на наше матричное преобразование МММ. Поскольку скалярное произведение дает скаляр, мы можем распределить и коммутировать МММ следующим образом:
Мх=(х⋅v1)Mv1+(x⋅v2)Mv2 M \textbf{x} = (\textbf{x} \cdot \textbf{v}_1) M \textbf{v}_1 + (\textbf{x} \cdot \textbf{v}_2) M \textbf{v }_2 Mx=(x⋅v1)Mv1+(x⋅v2)Mv2
Далее мы можем переписать MviM \textbf{v}_iMvi как uiσi\textbf{u}_i \sigma_iuiσi:
Мх=(х⋅v1)u1σ1+(x⋅v2)u2σ2 M \textbf{x} = (\textbf{x} \cdot \textbf{v}_1) \textbf{u}_1 \sigma_1 + (\textbf{x} \cdot \textbf{v}_2) \textbf{u }_2 \сигма_2 Mx=(x⋅v1)u1σ1+(x⋅v2)u2σ2
Мы почти у цели.{\ сверху} \тег{4} M=u1σ1v1⊤+u2σ2v2⊤(4)
При правильно определенных матрицах уравнение 444 становится SVD в своей канонической форме (уравнение 111) для матриц 2×22 x 22×2:
M=[[u1u2]⏟U[[σ100σ2]⏟Σ[[v1⊤v2⊤]⏟V⊤(5) M = \ underbrace{\vphantom{\Bigg[}\begin{bmatrix} \textbf{u}_1 и \textbf{u}_2 \end{bmatrix}}_{\textstyle U} \ underbrace{\ vphantom {\ Bigg [} \ begin {bmatrix} \сигма_1 & 0 \\ 0 & \сигма_2 \end{bmatrix}}_{\textstyle \Sigma} \ underbrace{\ vphantom {\ Bigg [} \ begin {bmatrix} \textbf{v}_1^{\top} \\ \textbf{v}_2^{\top} \end{bmatrix}}_{\textstyle V^{\top}} \тег{5} M=U[[u1u2]Σ[[σ100σ2]V⊤[[v1⊤v2⊤](5)
Более того, вы должны интуитивно понимать, что это значит.Любое матричное преобразование может быть представлено как диагональное преобразование (расширяющее, отражающее), определяемое Σ\SigmaΣ, при условии, что домен и диапазон сначала правильно повернуты.
Векторы ui\textbf{u}_iui называются левыми сингулярными векторами, а векторы vi\textbf{v}_ivi называются правыми сингулярными векторами. Эта ориентирующая терминология немного сбивает с толку, потому что «лево» и «право» берутся из приведенного выше уравнения, в то время как на наших диаграммах прямоугольников и эллипсов векторы vi\textbf{v}_ivi находятся слева.
Стандартный состав
Теперь, когда мы получили простую геометрическую интуицию для СВД и формализовали ее для всех матриц 2×22 \× 22×2, давайте переформулируем задачу в общем и стандартном виде. Если переход от 222-мерного к nnn-измерению вызывает затруднения, вспомните совет Джеффа Хинтона:
.Чтобы иметь дело с гиперплоскостями в 14-мерном пространстве, визуализируйте трехмерное пространство и очень громко скажите себе «четырнадцать».{*} \end{выровнено} МВМВВ*М=UΣ=UΣV*=UΣV*
Здесь UUU унитарно и m×mm \times mm×m; VVV унитарный и n×nn \times nn×n; а Σ\SigmaΣ диагональна и m×nm \times nm×n.{\top}V⊤ — ортонормированные правые сингулярные векторы. Пунктирные области являются отступами.
Диагональные элементы Σ\SigmaΣ являются сингулярными числами. Без ограничения общности можно предположить, что сингулярные значения упорядочены — для их упорядочения может потребоваться переупорядочение столбцов UUU и VVV. И геометрическая интерпретация их сохраняется в более высоких измерениях. Например, если бы мы выполнили SVD на матрице m×nm \times nm×n и заметили, что нижние сингулярные значения kkk были меньше некоторого эпсилона, вы могли бы визуализировать это матричное преобразование как сглаживание гиперэллипса вдоль этих kkk измерений.Или, если у вас есть экспоненциальный спад значения сингулярных значений, это предполагает, что все «действие» матрицы происходит только в нескольких измерениях.
Вот и все! Это СВД. Вы можете прочитать о различиях между полной и усеченной SVD, об обработке матриц низкого ранга и т. д. в более качественных ресурсах, чем этот. Моя цель состояла в том, чтобы прийти к уравнению 111 с помощью как можно более простых рассуждений. По крайней мере, на мой взгляд, медленное рассмотрение геометрической интуиции делает объяснения СВД более осмысленными.
Повторная визуализация СВД
Теперь, когда мы понимаем SVD, мы можем убедиться, что то, как мы визуализировали его, верно. Рассмотрим рисунок 8, который был сгенерирован с использованием Matplotlib и реализации SVD в NumPy,
Рис. 8. Несколько примеров использования реализации SVD в NumPy для визуализации алгоритма.{*}V* перед применением преобразования. Каждая пунктирная линия — это верхний сингулярный вектор для связанного преобразования.np.linalg.svd
. Мы видим, что эти цифры в точности совпадают с нашими интуитивными представлениями о том, что происходит с СВД в 222-м измерении.Приложения
SVD связан со многими другими свойствами матрицы. Количество ненулевых сингулярных значений равно рангу матрицы. Вот почему спектральная норма является выпуклым заменителем аппроксимаций низкого ранга. Областью матрицы является пространство, натянутое на векторы {u1,u2,…,ur}\{\textbf{u}_1, \textbf{u}_2, \dots, \textbf{u}_r\}{u1 ,u2,…,ur} где rrr — количество ненулевых сингулярных значений, а все сингулярные значения и векторы упорядочены.Матрица необратима, если она имеет сингулярное значение, равное нулю, потому что преобразование «схлопывает» nnn-куб по крайней мере в одном измерении. И так далее. После понимания SVD, я думаю, довольно просто интуитивно понять, почему должны выполняться вышеупомянутые свойства. Подробности см. в главе 5 (Trefethen & Bau III, 1997).
Один из алгоритмов, который мне гораздо легче понять после понимания SVD, — это анализ главных компонентов (PCA). Вместо того, чтобы предполагать, что вы знаете, как работает PCA, давайте посмотрим, что вычисляет PCA, а затем давайте рассуждать о том, что PCA делает с нашими знаниями о SVD.{\ вверх} U = IU ⊤ U = I. И даже не зная о собственных векторах или собственных значениях, мы можем увидеть, что делает PCA, поняв SVD: это диагонализация ковариационной матрицы XXX . Таким образом, PCA находит основные оси, по которым изменяются наши данные.
Если непонятно, что означает SVD или собственное разложение данных, Джереми Кун написал об этом хороший пост в блоге.
Заключение
Разложение по сингулярным числам или SVD — мощный инструмент в линейной алгебре. Понимание того, что декомпозиция представляет геометрически, полезно для понимания других свойств матрицы, а также помогает нам лучше понять алгоритмы, основанные на SVD.
Благодарности
Для написания этого поста мне потребовалось синтезировать информацию из ряда отличных ресурсов. В частности, для вывода в разделе, формирующем SVD, я использовал этот учебник от Американского математического общества. Я благодарю Махмуда Абдельхалека за то, что он обратил мое внимание на опечатку в выводе.{T} = \left[\begin{array}{ccc}0 & \sqrt{2} & 0\\1 & 2 & 1\\ 1 & 0 & 1\end{массив}\right]$$$ (шаги см. в калькуляторе транспонирования матриц).
Умножьте матрицу на ее транспонирование: $$$W = \left[\begin{array}{ccc}0 & 1 & 1\\\sqrt{2} & 2 & 0\\0 & 1 & 1\end {массив}\right]\cdot \left[\begin{array}{ccc}0 & \sqrt{2} & 0\\1 & 2 & 1\\1 & 0 & 1\end{массив}\right] = \left[\begin{array}{ccc}2 & 2 & 2\\2 & 6 & 2\\2 & 2 & 2\end{array}\right]$$$ (шаги см. в калькуляторе умножения матриц ).
Теперь найдите собственные значения и собственные векторы $$$W$$$ (шаги см. в калькуляторе собственных значений и собственных векторов).
Собственное значение: $$$8$$$, собственный вектор: $$$\left[\begin{array}{c}1\\2\\1\end{array}\right]$$$.
Собственное значение: $$$2$$$, собственный вектор: $$$\left[\begin{array}{c}1\\-1\\1\end{array}\right]$$$.
Собственное значение: $$$0$$$, собственный вектор: $$$\left[\begin{array}{c}-1\\0\\1\end{array}\right]$$$.{ T}\cdot u_{1} = \frac{1}{2 \sqrt{2}}\cdot \left[\begin{array}{ccc}0 & \sqrt{2} & 0\\1 & 2 & 1\\1 & 0 & 1\end{массив}\right]\cdot \left[\begin{массив}{c}\frac{\sqrt{6}}{6}\\\frac{\sqrt{6} }}{3}\\\frac{\sqrt{6}}{6}\end{массив}\right] = \left[\begin{array}{c}\frac{\sqrt{6}}{6 }\\\frac{\sqrt{3}}{2}\\\frac{\sqrt{3}}{6}\end{array}\right]$$$ (шаги см. в калькуляторе умножения матричного скаляра и калькулятор умножения матриц).{T}\cdot u_{2} = \frac{1}{\sqrt{2}}\cdot \left[\begin{array}{ccc}0 & \sqrt{2} & 0\\1 & 2 & 1\\1 & 0 & 1\end{массив}\right]\cdot \left[\begin{array}{c}\frac{\sqrt{3}}{3}\\- \frac{\sqrt{ 3}}{3}\\\frac{\sqrt{3}}{3}\end{массив}\right] = \left[\begin{array}{c} - \frac{\sqrt{3}} {3}\\0\\\frac{\sqrt{6}}{3}\end{array}\right]$$$ (шаги см. в разделах Калькулятор матричного скалярного умножения и Калькулятор матричного умножения).
Поскольку у нас закончились ненулевые $$$\sigma_{i}$$$ и нужен еще один вектор, найдем ортогональный вектор всем найденным векторам, найдя нулевое пространство матрицы, строки которой являются найденными векторами: $$$\left[\begin{array}{c}\sqrt{2}\\-1\\1\end{array}\right]$$$ (шаги см. T $ $ $.
Ответить
$$$U = \left[\begin{array}{ccc}\frac{\sqrt{6}}{6} & \frac{\sqrt{3}}{3} & - \frac{\sqrt {2}}{2}\\\frac{\sqrt{6}}{3} & - \frac{\sqrt{3}}{3} & 0\\\frac{\sqrt{6}}{6 } & \ frac {\ sqrt {3}} {3} & \ frac {\ sqrt {2}} {2} \ end {array} \ right] \ приблизительно \ left [\ begin {array} {ccc} 0,4082482
863 & 0,577350269189626 & -0,707106781186548\\0,816496580927726 & -0,577350269189626 & 0\\0,4082482
863 & 0.577350269189626 & 0,707106781186548\end{массив}\right]$$$A
$$$\Sigma = \left[\begin{array}{ccc}2 \sqrt{2} & 0 & 0\\0 & \sqrt{2} & 0\\0 & 0 & 0\end{массив}\right]\приблизительно \left[\begin{массив}{ccc} 2.82842712474619 & 0 & 0\\0 & 1.414213562373095 & 0\\0 & 0 & 0\end{массив}\right]$$$A
$$$V = \left[\begin{array}{ccc}\frac{\sqrt{6}}{6} & - \ frac {\ sqrt {3}} {3} & \ frac {\ sqrt {2}} {2} \\\ frac {\ sqrt {3}} {2} & 0 & - \ frac {1} {2} }\\\frac{\sqrt{3}}{6} & \frac{\sqrt{6}}{3} & \frac{1}{2}\end{массив}\right]\приблизительно \left[ \begin{массив}{ccc}0.4082482
863 & -0,577350269189626 & +0,707106781186548 \\ +0,866025403784439 & 0 & -0,5 \\ +0,288675134594813 & +0,816496580927726 & 0,5 \ конец {массив} \ право] $$$
Split-и-Combine сингулярного разложения для больших матричных
Разложение по сингулярным числам (SVD) — это фундаментальное разложение матриц в линейной алгебре. Он широко применяется во многих современных методах, например, для визуализации многомерных данных, уменьшения размерности, интеллектуального анализа данных, латентного семантического анализа и т.д.Хотя SVD играет существенную роль в этих областях, его очевидным недостатком является вычислительная стоимость третьего порядка. Эта вычислительная стоимость порядка трех делает многие современные приложения невозможными, особенно когда масштаб данных огромен и постоянно растет. Поэтому в современную эпоху крайне важно разработать быстрый метод SVD. Если ранг матрицы намного меньше размера матрицы, уже есть несколько быстрых подходов SVD. В этой статье мы сосредоточимся на этом случае, но с дополнительным условием, что данные значительно велики для хранения в виде матрицы.Мы продемонстрируем, что этот быстрый результат SVD достаточно точен, и, что наиболее важно, его можно получить немедленно. С помощью этого быстрого метода многие неосуществимые современные методики на базе СВД станут жизнеспособными.
1. Введение
Разложение по сингулярным числам (SVD) и анализ главных компонент (PCA) являются фундаментальными в линейной алгебре и статистике. Существует множество современных приложений, основанных на этих двух инструментах, таких как линейный дискриминантный анализ [1], многомерный скейлинговый анализ [2] и извлечение признаков, визуализация многомерных данных.В последние годы цифровая информация распространяется, и многие аналитические методы, основанные на PCA и SVD, сталкиваются с проблемой значительных вычислительных затрат. Таким образом, крайне важно разработать быстрый подход к вычислению PCA и SVD.
В настоящее время существует несколько известных методов вычисления SVD. Например, GR-SVD представляет собой двухэтапный метод, который выполняет преобразования Хаусхолдера для приведения матрицы к двудиагональной форме, а затем выполняет итерацию QR для получения сингулярных значений [3, 4].Поскольку недиагональные области используются для хранения информации о преобразовании, этот подход очень эффективен для экономии вычислительной памяти. Если мы хотим вычислить только несколько самых больших сингулярных значений и связанных с ними сингулярных векторов большой матрицы, бидиагонализация Ланцоша является важной процедурой для решения этой проблемы [5–8]. Однако все ранее упомянутые методы требуют умножения матриц для SVD. Одна интересная проблема заключается в том, как вычислить SVD для матрицы, когда размер матрицы огромен и загрузка всей матрицы в память невозможна? Основная цель данной статьи — разобраться с этой проблемой, когда числовой ранг огромной матрицы невелик.
Второй целью данной статьи является обновление SVD, когда размер матрицы увеличивается за счет обновления новых данных. Если ранг матрицы намного меньше, чем размер матрицы, Мэтью предложил метод быстрого обновления SVD для матрицы низкого ранга в 2006 году [9]. Ранговая SVD матрицы может быть вычислена за время для . Хотя размер матрицы остается неизменным в методе Мэтью, мы все же можем применить анализ этой статьи для обновления SVD при изменении размера матрицы.
Многомерное шкалирование (MDS) — это метод представления многомерных данных в низкоразмерную конфигурацию [10–12].Одним из ключевых подходов МДС является просто СВД, то есть если мы можем найти быстрый подход МДС, то можно найти быстрый подход СВД. Когда конфигурация данных является евклидовой, MDS подобен PCA в том, что обе могут удалять собственный шум благодаря компактному представлению данных. Вычислительная сложность третьего порядка делает невозможным применение к огромным данным, например, когда размер выборки превышает один миллион. В 2008 году Ценг и соавт. разработал метод быстрого многомерного масштабирования, который превратил классический метод MDS третьего порядка в линейный [13].В этой статье мы хотели бы реализовать SCMDS для быстрого подхода SVD, скажем, SCSVD. Следующие подразделы представляют собой обзоры классических MDS и SCSVD.
1.1. Обзор классического MDS
Предположим, что это матрица с рангом , где th строка представляет координаты th точки данных в -мерном пространстве. Позвольте быть матрицей продукта . Торгерсон [10] предложил первый классический метод МДС для восстановления матрицы декартовых координат точек по заданной симметричной матрице.Ключ классической MDS заключается в применении оператора двойного центрирования и разложения по сингулярным числам.
Предположим, что это пошаговая матрица, все элементы которой равны . Мы определяем симметричную матрицу как где матрица среднего значения строки , матрица среднего значения столбца , и матрица среднего значения основания . Оператор from to называется двойным центрированием. Если мы определим матрицу как можно упростить до . Поскольку матрица симметрична, SVD распадается на .Тогда у нас есть для некоторой унитарной матрицы . На практике ставим задачу получить результат МДС, а именно .
Хотя , для некоторой унитарной матрицы это то же самое, что сдвинуть все строки так, что среднее значение строки равно нулю, а затем умножить результат на . Следовательно, ряд сохраняет попарные отношения между точками данных. получается методом двойной центровки, стоимость которого ниже получения методом СВД. Когда объем данных огромен, стоимость классической MDS преобладает над стоимостью SVD, вычислительная сложность которой делает ее неосуществимой.Поэтому нам нужен быстрый метод MDS для решения проблемы огромных данных.
Метод MDS полезен при уменьшении размерности. Если матрицу расширить до пространства большей размерности, а затем сдвинуть и/или повернуть с помощью аффинного отображения, результат двойного центрирования соответствующей матрицы произведения останется прежним. В более общем смысле, позвольте быть выведенным из аффинным отображением таким, что , где ортогонален и и является ненулевым вектором в и . Это большая матрица, но с рангом меньше .Предположим, что двойное центрирование получается таким же, как двойное центрирование .
Теорема 1. Позвольте быть мерное расширение от аффинным отображением . Тогда двойное центрирование совпадает с двойным центрированием .
Доказательство. Пусть и пусть , имеем где вектор в . По определению и имеем где элемент . Тогда у нас есть,
В отличие от предыдущего определения , если матрица расстояний с каждым элементом , двойное центрирование эквивалентно , при условии что .Следовательно, метод MDS выполняет двойное центрирование на , умножает на , а затем выполняет SVD, который дает конфигурации набора данных.
1.2. Обзор SCMDS
В 2008 году мы адаптировали классическую MDS, чтобы уменьшить первоначальную сложность до [13], в которой мы доказали, что когда размерность данных значительно меньше, чем количество записей данных, существует быстрый линейный подход для классической МДС.
Основная идея быстрой MDS заключается в использовании статистической повторной выборки для разделения данных на перекрывающиеся подмножества.Мы выполняем классическую МДС на каждом подмножестве и получаем компактную евклидову конфигурацию. Затем мы используем перекрывающуюся информацию, чтобы объединить каждую конфигурацию подмножеств, чтобы восстановить конфигурацию всех данных. Следовательно, мы назвали этот быстрый метод MDS методом разделения и объединения MDS (SCMDS).
Позвольте быть матрицей побочного продукта для некоторого и позвольте быть случайной перестановкой . Предположим, что это непустое подмножество for , где for и . рассматривается как индекс перекрывающихся подгрупп.является подматрицей, которая извлекается из строк и столбцов по индексу . Тогда это матрица произведения подматрицы по индексу . Поскольку размер намного меньше, чем , мы можем легко выполнить классическую MDS для каждого, чтобы получить результат MDS, скажем . Получив координаты представления для каждой подгруппы, мы должны объединить эти представления в одно. Без ограничения общности мы лишь покажем, как можно объединить координаты первых двух подгрупп.
Предположим, что и матрицы, столбцы которых представляют собой два набора координат перекрывающихся точек относительно и соответственно.Тогда существует аффинное отображение, отображающее в . Позвольте и быть средствами столбцов и соответственно. Чтобы получить аффинное отображение, мы применяем факторизацию QR к обоим и . Тогда имеем и . Ясно, что среднее значение центра векторов-столбцов сдвинуто к нулю. Поскольку и происходят из одного и того же набора данных, разница между и заключается в вращении. Поэтому треугольные матрицы и должны совпадать при отсутствии шума в и . Из-за случайности знака столбцов в факторизации QR знак столбцов может потребоваться скорректировать в соответствии с соответствующими диагональными элементами так, чтобы знаки трехдиагональных элементов и были одинаковыми.
После необходимой модификации знака столбцов мы заключаем, что Кроме того, у нас есть Здесь унитарный оператор и сдвиг . Поскольку ключевым шагом нахождения этого аффинного отображения является разложение QR , вычислительные затраты равны , где - число столбцов и . Следовательно, стоимость сложности ограничена количеством выборок в каждой перекрывающейся области. Доказательство вычислительной стоимости SCMDS будет дано позже.
Предположим, что в наборе данных есть точки. Мы делим эти выборки на перекрывающиеся подгруппы, и пусть будет количеством точек в каждой подгруппе и пусть будет количеством точек в каждой области пересечения. Тогда у нас есть отношения или Для каждой подгруппы мы применяем классическую MDS для вычисления конфигурации данных каждой группы, которая стоит . В каждой перекрывающейся области мы применяем факторизацию QR для вычисления аффинного преобразования, которое стоит .Предположим, что истинная размерность данных равна , а нижняя граница равна . Для удобства примем за некоторую константу . Тогда общая стоимость вычислений составляет около При , вычислительные затраты намного меньше, чем , что является временем расчета быстрого метода MDS, предложенного Morrison et al., 2003 [14]. Ключевая идея нашего быстрого метода MDS состоит в том, чтобы разделить данные на подгруппы, а затем объединить конфигурации для восстановления всего. Поскольку все сложности третьего порядка ограничены небольшим количеством записей данных, мы можем ускорить MDS.
Предложение 2. Когда количество выборок намного превышает размерность данных , вычислительная сложность SCMDS равна , что является линейным.
2. Методология
После рассмотрения MDS и SCMDS мы продемонстрируем, как адаптировать метод SCMDS, чтобы он стал быстрым PCA, и как быстрый PCA может стать быстрым SVD с дальнейшими модификациями.
2.1. От SCMDS к SCPCA
Поскольку MDS подобен PCA, когда конфигурация данных является евклидовой, мы можем адаптировать метод SCMDS для получения быстрого PCA с аналогичным ограничением, когда ранг намного меньше, чем размер и .
Уравнение (1) показывает, как использовать двойное центрирование для преобразования матрицы произведения в формат . Заметим, что результат MDS равен матрице, полученной сдвигом координат со средним значением данных точек в исходную точку с последующим преобразованием некоторой унитарной матрицы.
Пусть ; цель PCA состоит в том, чтобы найти собственные векторы ковариационной матрицы и получить соответствующие оценки. Поскольку ковариационная матрица, определяемая через, симметрична, а нахождение собственных векторов ковариационной матрицы аналогично получению в (1), положим, опуская константу .Заметим, что такое опущение константы не изменит направления собственных векторов. Когда мы хотим провести PCA на , соответствующая матрица может быть получена с помощью , где определяется как Другими словами, выполнение PCA на A эквивалентно выполнению MDS на . Это и результатом PCA будет и . Из результата MDS () мы можем легко получить и путем нормализации векторов-столбцов .
На практике мы не хотим создавать матрицу продуктов, когда она огромна.Скорее, после того, как мы получим матрицу из , мы будем случайным образом производить перестановку индексов и использовать индекс перекрывающейся подгруппы для вычисления . И затем мы следуем шагу SCMDS, чтобы получить результат, .
Однако результат SCMDS имеет вид , где унитарная матрица в и обычно ненулевой вектор. Удаление фактора может быть легко выполнено путем вычисления среднего значения векторов-строк результата SCMDS. После удаления компонента из каждой вектор-строки мы получаем .
Так как и , мы имеем это маленькая матрица. Легко решить эту небольшую проблему собственных значений, чтобы получить , , и . Вычислительные затраты от для получения и . Следовательно, подход SCMDS к вычислению SVD по-прежнему остается линейным.
Обратите внимание, что существуют некоторые линейные методы SVD для тонкой матрицы ( или ). Даже в случае большой матрицы с малым рангом традиционный метод SVD, например GR-SVD, может быть реализован линейным (из-за зависимости многие компоненты матрицы становятся нулевыми в алгоритме GR-SVD).Однако, если ранг большой матрицы почти заполнен, а числовой ранг мал или размер матрицы настолько велик, что загрузка всей матрицы невозможна, SCMDS имеет преимущество в скорости вычислений. И мы называем этот подход к получению и с помощью SCMDS SCPCA.
2.2. От SCPCA к SCSVD
Концепции SVD и PCA очень похожи. Поскольку PCA начинается с разложения ковариационной матрицы набора данных, его можно рассматривать как установку центра масс вектора-строки на ноль.С другой стороны, SVD работает непосредственно с матрицей продукта без смещения. Если среднее значение строк матрицы равно нулю, собственные векторы, полученные с помощью SVD, равны собственным векторам, полученным с помощью PCA. Мы ищем метод, который даст быстрый подход к получению результата SVD без пересчета собственных векторов всего набора данных, когда дан результат PCA. Ниже приводится математический анализ этого процесса.
Позвольте быть матрицей столбцов набора данных: , где среднее значение столбцов .Следовательно, среднее значение строки равно нулю. Предположим, что у нас есть результат PCA , то есть . Тогда мы имеем для некоторой ортогональной матрицы . Предположим, что ранг много меньше размера матрицы. Мы наблюдаем, что или , в зависимости от того, натянуты ли столбцы . Если натянуто на , то где - вектор коэффициентов, когда представлен , то есть .
Если сингулярное разложение есть , мы имеем Поскольку матрица унитарна, она также автоматически является ортогональной матрицей.Тогда у нас есть СВД калибра .
Проверив размер матрицы , мы видим, что вычисление SVD не является большой задачей. Это связано с тем, что является матрицей и, согласно нашему предположению, намного меньше, чем , поэтому мы можем применить экономическую SVD для получения разложения .
С другой стороны, если не охватывается , анализ становится где - единичный вектор, определяемый формулой Используя ту же концепцию диагонализации в случае, когда он натянут на столбцы , мы находим SVD Тогда , где – другая ортогональная матрица, а значит, СВД пополнена.
Предложение 3. Позвольте быть матрицей большого размера и пусть ее ранг будет намного меньше, чем . Тогда SCSVD или SCPCA имеют линейную вычислительную сложность.
Исходя из приведенного выше анализа, мы можем использовать быстрый подход PCA, сначала вычислив SCMDS, а затем адаптировав результат MDS для получения PCA. Мы назвали этот подход SCPCA. Точно так же подход быстрого SVD, который сначала вычисляет SCMDS, затем адаптирует результат MDS для получения PCA и, наконец, адаптирует результат PCA к SVD, называется SCSVD.Эти два новых подхода работают, когда ранг намного меньше, чем количество выборок и количество переменных. Для получения точного решения параметр должен быть больше ранга . В методе SCPCA или SCMDS, если , мы получаем только приближенные решения PCA и SVD. По необходимому критерию мы можем уменьшить вычислительную сложность от до . Если числовой ранг не мал, например , вычислительная сложность становится почти такой же, как у исходных ППШ и СВД.Наш подход не имеет преимущества в последнем случае.
3. SVD для непрерывно растущих данных
В этом разделе мы ищем решение, когда данные постоянно обновляются и нам необходимо постоянно вычислять SVD. Вместо повторного сканирования всех данных мы пытаемся использовать предыдущий результат SCSVD вместе с новыми обновленными данными для вычисления следующего SVD. Прежде чем представить наш метод обновления, мы сначала рассмотрим общие методы обновления.
Позвольте быть матрицей, где количество переменных и количество выборок.И мы предполагаем, что и то, и другое огромно. Когда поступают новые данные, мы собираем эти новые данные, чтобы сформировать матрицу столбцов, которая обозначается . Предположим, что у нас есть сингулярное разложение , то есть, где , ортогональны и является диагональю. Поскольку данные обновляются, матрица данных становится Чтобы вычислить разложение по сингулярным числам , нам нужно вычислить собственное значение и собственный вектор .
Если натянуто на пространство столбцов , мы можем представить матрицу столбцов как , где матрица коэффициентов со столбцами в качестве основы.Так как является ортогональным, матрица коэффициентов может быть легко вычислена с помощью . Тогда у нас есть
Обратите внимание, что матрица положительно симметрична и имеет небольшой размер. Используя теорему о спектре, мы можем разложить эту матрицу на . Поскольку матрица унитарна, поворачивается на . В этом случае в вычислительных затратах преобладает вращение от к , и оно равно .
Как правило, расширенная матрица не охватывается пространством столбцов, и разложение должно быть изменено с помощью где , и QR разложение .Стоимость получения и is , вычислительная стоимость разложения QR is , стоимость получения is , стоимость вращения to is . Когда стоимость процесса обновления линейна. Однако, если ранг не мал (или ), в вычислительных затратах доминирует .
Теперь мы обсудим, как обновить SVD в подходе SCSVD. Если обновленные векторы-столбцы натянуты на векторы-столбцы некоторой подгруппы исходных данных, скажем, размерность не будет увеличиваться на расширенную матрицу.Мы просто сбрасываем матрицу расстояний в этой подгруппе на где — количество векторов в исходной -й подгруппе. Чтобы вычислить результат MDS для этой обновленной подгруппы, это стоит . Затем мы объединим эти точки представления MDS с остальными точками. Стоимость получения комбинированного аффинного отображения по-прежнему увеличивается в новом обновлении. Объединение этой новой подгруппы со всем набором данных требует . Затем для передачи результата MDS в SVD требуется , что также является линейным.
Если он не охватывается какой-либо подгруппой предыдущего процесса SCMDS, то мы должны выполнить обновление до самой большой группы подгрупп. Поскольку размер этой обновленной группы будет увеличиваться, мы должны внести некоторые изменения в комбинированный подход. Если матрица столбцов конфигурации MDS новой обновленной группы равна , а матрица столбцов конфигурации других элементов равна , где , то мы расширим матрицу до матрицы, заполнив нули в нижней части исходной .После настройки и до того же размера рядов мы выполняем тот же шаг объединения, что и раньше. Здесь ширина матрицы почти равна количеству целых данных, и этот шаг объединения занимает .
Существует одно важное различие между общим подходом и подходом SCSVD. Чтобы получить SVD из результата MDS, нам нужен вектор среднего столбца матрицы. Необходимо вычислить вектор среднего значения столбца исходной матрицы, а затем вектор среднего значения столбца обновляется простым средневзвешенным значением при поступлении новых данных.
Обратите внимание, что вне зависимости от того, охватывается или нет, метод обновления в SCSVD не имеет преимуществ перед общим методом обновления, хотя вычислительные затраты того же порядка. Это связано с тем, что истинная вычислительная стоимость метода обновления SCSVD всегда больше, чем общий метод обновления, даже если они имеют один и тот же порядок. Таким образом, когда нам необходимо обновить новые данные в матрице, на которой будет выполняться СВД, рекомендуется общий метод. Однако, когда размер матрицы настолько велик, что расширение становится невозможным, лучше пересчитать результат SVD.В этом случае и при условии, что истинный ранг намного меньше размера матрицы, рекомендуется подход SCSVD.
4. Экспериментальный результат
В этом разделе мы покажем, что наши быстрые методы PCA и SVD хорошо работают для матриц большого размера с небольшими рангами. Моделируемая матрица создается произведением двух тонких матриц и одной маленькой диагональной матрицы, то есть , где . Размер первой матрицы равен , второй матрицы равен , а размер третьей матрицы равен . Тогда произведение этих трех матриц имеет размер и ранг меньше .Абсолютные значения диагональных элементов уменьшаются для имитации ситуации, когда обычно поступают данные. Когда и большие и намного меньше, чем и , смоделированная матрица удовлетворяет нашему условию SCSVD. Мы выбираем , и в качестве нашего первого примера. Каждый элемент смоделированной матрицы генерируется из нормального распределения, а затем корректируются диагональные члены. Среднее время наработки SCSVD составляет 3,98 секунды, а у экономичной SVD — 16,14 секунды. Здесь каждое среднее значение получено из 100 повторений.
Если увеличить матрицу до , и зафиксировать тот же ранг , то время работы экономичной СВД составит 1209,92 секунды, а СКСВД всего 195,85 секунды. Мы наблюдаем, что наш метод SCSVD демонстрирует значительное улучшение. На рис. 1 показано сравнение скорости экономичного SVD (сплошная линия) и SCSVD (штриховая линия) с размером квадратной матрицы от 500 до 4000 при фиксированном ранге 50. Мы также используем фиксированный параметр и в каждом тесте моделирования. Мы видим, что вычислительная стоимость SVD увеличивается на 3 порядка по сравнению с линейным увеличением SCSVD.
Обратите внимание, что когда расчетный ранг, используемый в SCSVD, больше, чем реальный ранг матрицы данных, между экономическим SVD и SCSVD почти нет ошибки (за исключением ошибки округления). Ошибка между экономичным SVD и SCSVD вычисляется путем сравнения ортогональности. Предположим, что это происходит от SCSVD и является производным от экономичного SVD. Поскольку вывод векторов-столбцов и может быть обратным, ошибка определяется выражением где - первый столбец , - первый столбец , и - единичная матрица размера .Ошибка примерно только. Средняя ошибка в том же эксперименте на рисунке 1 составляет , а стандартное отклонение равно . Таким образом, когда оценочный ранг SCSVD больше, чем истинный ранг, точность SCSVD почти такая же, как у SVD в случае матрицы малого ранга.
Мы хотели бы изучить, что происходит, если предполагаемый ранг меньше, чем истинный ранг. Согласно эксперименту SCMDS [13], если оценочный ранг меньше истинного ранга, производительность SCMDS ухудшится.В нашем эксперименте мы устанавливаем истинный ранг смоделированной матрицы равным, а затем наблюдаем предполагаемый ранг от до . Соотношение между ошибкой и оценочным рангом с разным размером матрицы показано на рисунке 2.
Мы можем видеть, что когда оценочный ранг уменьшается, ошибка возникает быстро. Линии на рис. 2 снизу вверх — размер матрицы с до соответственно. Ошибка медленно увеличивается с увеличением размера матрицы. Мы замечаем, что для нашего метода важно сделать предполагаемый ранг выше, чем истинное измерение.
Целью второго эксперимента по моделированию является изучение аппроксимационных характеристик применения SCPCA к большой матрице полного ранга. Мы генерируем случайную матрицу с фиксированным числом столбцов и строк, скажем, 1000. Квадратная матрица создается по форме , где - существенный ранг, - возмущение, и - малый коэффициент для корректировки влияния на предыдущую матрицу . Такую матрицу можно рассматривать как матрицу большого размера с малым рангом, дополненную матрицей возмущения полного ранга.Мы покажем, что наш метод хорошо работает для этого типа матриц.
На рис. 3 показана зависимость ошибки от оценочного ранга, где ошибка определяется как (25), что представляет собой сравнение ортогональности между и . Все элементы матриц , , генерируются случайным образом из нормального распределения и представляет собой диагональную матрицу, в которой диагональные члены затухают по порядку, где и существенный ранг . Мы видим, что когда оцениваемый ранг увеличивается, ошибка композиции уменьшается. Особенно, когда предполагаемый ранг больше, чем основной ранг, ошибки почти нет.Таким образом, важно убедиться, что предполагаемый ранг выше существенного ранга. Другими словами, когда оценочный ранг SCSVD меньше существенного ранга, наш результат SCSVD можно использовать как приближенное решение SVD.
В последнем экспериментальном результате мы позволяем матрице расти и наблюдаем за производительностью между общим подходом и подходом обновления SCSVD. Мы начинаем с матрицы, которая образована , где - диагональная матрица, так что диагональные члены положительны и быстро распадаются, как натуральные данные, и каждый элемент в и является случайным числом из нормального распределения.Затем мы обновляем случайную матрицу в матрицу в 10 раз больше. Элемент обновленной матрицы также из нормального распределения. Когда матрица обновляется, мы вычисляем разложение SVD, чтобы получить первые столбцы . Обновленный результат общего подхода — , а обновленный результат подхода SCMDS — . Мы вычисляем ошибку как (25) для и . Причина, по которой мы занимаемся только первыми основаниями пространства столбцов, заключается в том, что редко используется такая высокая размерность в приложениях уменьшения размерности.
Время вычислений SCMDS больше, чем при обычном подходе; однако разница составляет одну секунду. Ошибка подхода SCMDS к обновлению строк по сравнению с повторным вычислением разложения SVD составляет стандартное отклонение. Ошибка общего подхода со стандартным отклонением. Время обновления SCMDS и общего подхода показано на рисунке 4. Сплошная красная линия — это время для SCMDS, а синяя линия — время общего подхода. Мы видим, что подход SCMDS примерно в 8 раз превышает общий подход.Следовательно, метод обновления SCSVD не рекомендуется ни для экономии времени, ни для контроля ошибок.
5. Заключение
Мы предложили быстрый метод PCA и быстрый SVD, основанный на технике метода SCMDS. Новый метод PCA и SVD имеют такую же точность, как и традиционный метод PCA и SVD, когда ранг матрицы намного меньше размера матрицы. Результаты применения SCPCA и SCSVD к матрице полного ранга также достаточно надежны, когда существенный ранг матрицы намного меньше, чем размер матрицы.Таким образом, мы можем использовать SCSVD в приложении с огромным объемом данных, чтобы получить хорошее приближенное начальное значение. Алгоритм обновления подхода SCMDS обсуждается и сравнивается с общим подходом обновления. Показатели подхода SCMDS как по времени вычислений, так и по ошибке хуже, чем у общего подхода. Следовательно, метод SCSVD рекомендуется только для вычисления SVD для большой матрицы, но не рекомендуется для подхода обновления.
Благодарность
Эта работа была поддержана Национальным научным советом.
Разложение по сингулярным числам — обзор комплексная)
, где U — ортогональная матрица размера m×m, а V — ортогональная матрица размера n×n. Если A является комплексной, то U и V являются унитарными матрицами. Во всех случаях S является действительной диагональной матрицей размера m×n.Элементы главной диагонали этой матрицы называются сингулярными числами A . Обычно они располагаются в порядке убывания, так что s1>s2>...>sn. Таким образом,
S=[s10…00s2…0⋮⋮⋮00…sn00…0⋮⋮⋮00…0]
Сингулярные значения представляют собой неотрицательные квадратные корни собственных значений ATA. Поскольку ATA является симметричным или эрмитовым, эти собственные значения действительны и неотрицательны, так что сингулярные значения также действительны и неотрицательны. Алгоритмы вычисления SVD матрицы даны Голубом и Ван Лоаном (1989).
SVD матрицы имеет несколько важных применений. В разделе 2.4 мы представили сокращенную ступенчатую форму матрицы строк и объяснили, как функция Matlab rref дает информацию, из которой можно вывести ранг матрицы. Однако ранг может быть более эффективно определен из SVD матрицы, поскольку ее ранг равен количеству ее ненулевых сингулярных значений. Таким образом, для матрицы 5 × 5 ранга 3 s4 и s5 будут равны нулю. На практике, вместо подсчета ненулевых сингулярных значений, Matlab определяет ранг по SVD, подсчитывая количество сингулярных значений, превышающих некоторое значение допуска.Это более реалистичный подход к определению ранга, чем подсчет любого ненулевого значения, каким бы малым оно ни было.
Чтобы проиллюстрировать, как разложение по сингулярным числам помогает нам исследовать свойства матрицы, мы воспользуемся функцией Matlab svd, чтобы выполнить разложение по сингулярным значениям и сравнить его с функцией rref. Рассмотрим следующий пример, в котором матрица Вандермонда создается с помощью vander функции Matlab. Известно, что матрица Вандермонда плохо обусловлена. СВД позволяет нам исследовать природу этой плохой обусловленности.В частности, ноль или очень маленькое сингулярное значение указывает на дефицит ранга, и этот пример показывает, что сингулярные значения становятся относительно близкими к этому условию. Кроме того, SVD позволяет вычислить число обусловленности матрицы. Фактически, функция Matlab cond использует SVD для вычисления числа обусловленности, и это дает те же значения, что и полученные путем деления наибольшего сингулярного значения на наименьшее сингулярное значение. Кроме того, евклидова норма матрицы обеспечивается первым сингулярным значением.Сравнивая SVD с процессом RREF в следующем сценарии, мы видим, что результат использования функций Matlab rref и rank дает ранг этой специальной матрицы Вандермонда, равный 5, но больше ничего нам не говорит. Нет предупреждения о том, что матрица плохо кондиционирована.
>> с = [1 1,01 1,02 1,03 1,04];
>> V = VANDER (C)
V =
1,0000 1.0000 1,0000 1.0000 1.0000
1.0406 1.0303 1.0201 1.0100 1.0000
1.0824 1.0612 1,0404 1,0000 1,0200 1,1255
1,0927 1,0609 1,0300 1,0000 1,1699
1,1249 1,0816 1,0400 1,0000
>> длинный формат
>> s = SVD (V)
с =
5,210367051037899 0,101918335876689
0,0006996988394450.000002352380295
0,000000003294983
94983>> Норма (V)
ANS =
ANS =
5.210367051037898
>> COND (V)
ANS =
1.581303244929480E + 09
>> S (1) / с (5)
ANS =
ANS =
1,581303244929480E + 09
>> Ранг (V)
ANS =
5
>> RREF (V)
ans =
1 0 0 0 0
0 1 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0 1 0
0 0 0 0 1
В следующем примере очень похожа на предыдущую, но теперь матрица Вандермонда сгенерирована с недостаточным рангом.Наименьшее единственное число, хотя и не нулевое, равно нулю с машинной точностью, а rank возвращает значение 4.
>> c = [1 1,01 1,02 1,03 1,03];
>> V = Vander (с)
V =
1,0000
1,0000 1,0000 1,0000 1,0000 1,04061,0303 1,0201 1,0100 1,0000 1,0824
1,0612 1,0404 1,0200 1,0000 1,1255
1,0927 1,0609 1,0300 1,0000 1,1255
1,0927 1,0609 1,0300 1,0000
>> длинный формат e
>> s = svd(V)
s =
5.187797954424026e + 00
8.336322098941423e-02
3.997349250041025e-04
8.462129966394409e-07
1.261104176071465e-23
>> Формат короткой
>> Оценка (V)
ANS =
4
>> RREF (V)
ANS =
ANS =
1.0000 0 0 0 -0,9424
0 1.0000 0 0 0 3.8262
0 0 0 0 1.0000 0 -5.8251
0 0 0 1.0000 3.9414
0 0 0 0 0 0 0 0 0
>> cond(V)
ans =
4.