На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> вычислить градиент
    снова нейронные сети   ::)

    вот выдумывал я алгоритм градиентного спуска и столкнулся с такой задачей. есть 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 сетями.

    вопрос (а вы думали я ето просто чтобы похвастаться написал?):
    получить выражение для градиента в таком подпространстве.
      что-то замутил очень..
      зачем в методу градиентного спуска нейросети?
        не зачем в методу градиентного спуска нейросети, а зачем нейросетям градиентный спуск! ведь все (ВСЕ!) нейронные сети работают только с помощью градиентного спуска!

        однако вопрос снимается с повестки дня, ибо я его задавал в спешке и мне лень было подумать. как говорят в таких случаях англичане, поспешишь - людей насмешишь. на самом же деле ето проще простого.

        представляем градиент в виде линейной комбинации векторов, представляющих собой разность k - го и 1 - го векторов. получается система из n-1 уравнения:
                 _
         {Sij}*b={yj-y1}
                                                                                        _
        где {Sij} - матрица перекрывания, т е Sij=(xi-x1, xj-x1), a b - это вектор градиента в подпространстве.

        получается замечательный градиент. только меня волнуют 2 вопроса:

        1. что будет, если n>N?

        2. что будет, если какиелибо вектора из xi-x1 окажутся линейно зваисимыми?
        Сообщение отредактировано: wormball -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0206 ]   [ 15 queries used ]   [ Generated: 1.05.24, 22:39 GMT ]