Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.1.232] |
|
Сообщ.
#1
,
|
|
|
снова нейронные сети :
вот выдумывал я алгоритм градиентного спуска и столкнулся с такой задачей. есть n нейронных сетей, каждая может быть представлена вектором в N - мерном пространстве, и для каждой из них вычисляется "крутизна", в смысле чем больше крутизна, тем лучше. надо найти направление градиента крутизны в N мерном пространстве, причём его модуль не имеет решающего значения. первое что мне пришло в голову - вычислять корреляцию для каждого веса синапса методом наименьших квадратов: E=S(f(xik)-yk)^2 k где yk - крутизна kй сети, a f(xik)=ai*xi+bi - линейная функция, ai - искомый градиент. ну я ету енергию минимизировал, у меня получилось замечательное аналитическое выражение для градиента. однако, поразмыслив, я решил, что так дело не пойдёт, ибо такое выражение не учитывает корреляцию компонентов вектора между собой, а потому получающийся вектор далёк от истинного градиента. поэтому я записал мою линейную аппроксимирующую функцию в следующем виде: _ N f(x)=S(ai*xi)+a0 i=1 т е ето гиперплоскость в N+1 мерном пространстве. применив наименьшие квадраты к такой функции, я получил систему из N+1 линейных уравнений, где N в моём случае несколько тысяч. однако главная трудность не в этом. дело в том, что число сетей (т е фактически точек в N мерном пространстве) много меньше N, а точнее десятки и сотни, ибо процедура вычисления крутизны занимает очень много времени и оно растёт пропорционально n^2(каждая сеть играет с каждой другой сетью в футбол змейками). в этом случае получается, что система для вычисления градиента становится неопределённой, т е точек слишком мало для того, чтобы однозначно вычислить градиент. я придумал такой выход: чтобы однозначно определить градиент, надо его вычислять в n мерном подпространстве, образуемом нашими n сетями. вопрос (а вы думали я ето просто чтобы похвастаться написал?): получить выражение для градиента в таком подпространстве. |
Сообщ.
#2
,
|
|
|
что-то замутил очень..
зачем в методу градиентного спуска нейросети? |
Сообщ.
#3
,
|
|
|
не зачем в методу градиентного спуска нейросети, а зачем нейросетям градиентный спуск! ведь все (ВСЕ!) нейронные сети работают только с помощью градиентного спуска!
однако вопрос снимается с повестки дня, ибо я его задавал в спешке и мне лень было подумать. как говорят в таких случаях англичане, поспешишь - людей насмешишь. на самом же деле ето проще простого. представляем градиент в виде линейной комбинации векторов, представляющих собой разность k - го и 1 - го векторов. получается система из n-1 уравнения: _ {Sij}*b={yj-y1} _ где {Sij} - матрица перекрывания, т е Sij=(xi-x1, xj-x1), a b - это вектор градиента в подпространстве. получается замечательный градиент. только меня волнуют 2 вопроса: 1. что будет, если n>N? 2. что будет, если какиелибо вектора из xi-x1 окажутся линейно зваисимыми? |