neděle 27. května 2012

Lze se spokojit s Cantorovskou představou kontinua?

Těm, kdo stále cítí afinitu vůči Cantorovu způsobu myšlení, by mohl otevří oči následující příměr. Stejně jako definoval Cantor reálné číslo jako libovolnou (Cauchyho) posloupnost, mohli Řekové definovat reálné číslo jako bod přímky konstruovatelné libovolnými prostředky nebo mohl Gödel říci, že dokazatelné je vše, co je pravdivé. Tím by slavné problémy jako kvadratura kruhu, úplná axiomatizovatelnost aritmetiky nebo „Entscheidungsproblem“ jednoduše zmizely. Již Archimédes byl totiž schopen ke kruhu daného průměru zkonstruovat odpovídající jeho obvodu a jsem přesvědčen, že když vám dám formuli predikátové logiky prvního řádu, budete – při odpovídajícím vzdělání – v konečně mnoha krocích rozhodnout, zda se jedná o tautologii, nebo ne. (...) Co se týče diagonálního argumentu, obecný závěr, předvedený již Wittgensteinem, je relativně přímý: je nevhodné a matoucí říkat, že existuje více reálných čísel než přirozených, když jediné, co de facto máme v ruce, je postřeh, že jsou jejich jména užívána různě. Tento vhled se bezesporu skrývá i za Brouwerovým raným rozhodnutím specifikovat kontinuum jako spočetně nedokončené v tom smyslu, že pod hrozbou paradoxu nemůže tvořit uzavřenou schematicky danou totalitu.
Vojtěch Kolman – Idea, číslo, pravidlo

středa 23. května 2012

Pozice matematiky

Zabývá-li se filosofie ve Wittgensteinově a obecně v analytické koncepci jazykem, nedělá ji to ještě lingvistikou. K té se má podobně jako medicína k anatomii, tj. mají sice stejný předmět (jazyk, resp. lidské tělo), ale řešení filosofických stejně jako lékařských problémů nespočívá v tom, že vysvětlí, jak to ve skutečnosti je, ale tím, že se vyléčí, nechají zmizet. To činí filosofii bytostně nevědeckou, nezvědavou, nerozšiřující naše poznání. Specifická role matematiky v prostoru mezi filosofií a empirickou vědou spočívá v tom, že žije v jakémsi mezisvětí, tj. má sice konkrétní předmět jako ostatní vědy (čísla, obrazce atd.), tento předmět ale není jednoduše vykazatelný v prostoru běžné zkušenosti, i když v něm nachází nezpochybnitelné aplikace. To ji činí mimořádně atraktivní jako cvičný materiál pro ty, kdo se chtějí stát filosofy, a proto je také výuka matematiky Platónem metodicky řazena před zvládnutí filosofické dialektiky.
Vojtěch Kolman – Idea, číslo, pravidlo

pondělí 21. května 2012

Cantor o Kantovi

Přiložená ukázka je Cantorův dopis Russellovi, který Russell uveřejnil ve své autobiografii, celé je to zde.

I am Baconian in the Bacon-Shakespeare question and I am quite an adversary of Old Kant, who, in my eyes has done much harm and mischief to philosophy, even to mankind; as you easily see by the most perverted development of metaphysics in Germany in all that followed him, as in Fichte, Schelling, Hegel, Herbart, Schopenhauer, Hartmann, Nietzsche, etc. etc. on to this very day. I never could understand that and why such reasonable and enobled peoples as the Italiens, the English and the French are, could follow yonder sophistical philistine, who was so bad a mathematician. And now it is that in just this abominable mummy, as Kant is, Monsieur Poincare felt quite enamoured, if he is not bewitched by him.
Bertrand Russell - Autobiography

V kontroverzi Shakespeare vs. Bacon jsem baconovec a jsem rozhodný protivník starého Kanta, jež se podle mě dopustil tolika darebáctví a škod nejen na filosofii, ale i lidstvu, jak je to nejsnáze vidět na zvrhlém vývoji německé metafyziky, jež mu následoval, od Fichta, Schellinga, Hegela, Herbarta, Schopenhauera, Hartmanna, Nietzscheho atd. až po dnešní dny. Nikdy jsem nedokázal pochopit, jak tak rozumní a ušlechtilí lidé jako Italové, Angličané a Francouzi mohou následovat tohoto sofistického filištína, jenž byl špatným matematikem. Nyní se do této odporné mumie, jakou Kant je, zamiloval Monsieur Poincaré, nebyl-li jí dokonce uhranut. 
 George Cantor – Dopis Russellovi.

pondělí 14. května 2012

Cvičení s trénováním neuronové sítě s libovolným počtem vrstev

Přiložená ukázka je ten nejjednodušší gradientní algoritmus (tj. backpropagation v základní podobě). Kritérium optimality je MSE. Aktivační funkce je z-funkce, což je zrcadlově převrácená sigma-funkce: z(x) = σ(-x). (Ušetří se jedno mínus.) Neuronová síť se učí všech 16 možných binárních funkcí najednou. Kód v Matlabu přikládám. Tento skript je jen pro ověření funkčnosti návrhu algoritmu. Je to docela dobré cvičení, pokud se učíte parciálně derivovat a operace s maticemi. Je to úplně jednoduché a měl by to zvládnout i začátečník. (Což ale neznamená, že jsem neudělal chybu.)

% počet vstupů NN
dimx = 2;

% počty neuronů v jednotlivých vrstvách (poslední číslo = počet výstupů)
ns = [5, 12, 16];

% počet vrstev NN (vstupy nejsou vrstva)
nL = length(ns);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% počet příkladů v trénovací množině
T = 4;

% příklady vstupů (příklady jsou v řádcích)
X = [
     0     0
     1     0
     0     1
     1     1
];

% příklady požadovaných výstupů (příklady jsou v řádcích)
Y = [
     0     0     0     0     0     0     0     0     1     1     1     1     1     1     1     1
     0     0     0     0     1     1     1     1     0     0     0     0     1     1     1     1
     0     0     1     1     0     0     1     1     0     0     1     1     0     0     1     1
     0     1     0     1     0     1     0     1     0     1     0     1     0     1     0     1
];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Alokace paměti a inicializace NN

dimsx = [dimx, ns(1:(nL - 1))];
Ws = {};
bs = {};
for i = 1:nL
    Ws{i} = 0.1 * randn(dimsx(i), ns(i));
    bs{i} = 0.1 * randn(1, ns(i));
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Alokace paměti

Bs = {};
Xis = {};
Xs = {};
dXdXis = {};
dedXs = {};
dedXis = {};
dedWs = {};
dedbs = {};
for i = 1:nL
    Xis{i} = zeros(T, ns(i));
    Xs{i} = zeros(T, ns(i));
    Bs{i} = zeros(T, ns(i));
    dXdXis{i} = zeros(T, ns(i));
    dedXs{i} = zeros(T, ns(i));
    dedXis{i} = zeros(T, ns(i));
    dedWs{i} = zeros(dimsx(i), ns(i));
    dedbs{i} = zeros(1, ns(i));
end

for icycle = 1:10000000
    
    % počítání výstupů
    
    for i = 1:nL
        Bs{i} = ones(T, 1) * bs{i};
    end
    
    for i = 1:nL
        if i == 1
            Xis{i} = X * Ws{i} + Bs{i};
        else
            Xis{i} = Xs{i - 1} * Ws{i} + Bs{i};
        end
        Xs{i} = 1 ./ (1 + exp(Xis{i}));
    end

    % tisk výstupů

    disp(Xs{nL})
    
    % počítání chyby
    
    e = sum(sum((Xs{nL} - Y).^2))
    
    if e < 0.01
        break
    end

    % počítání gradientu
    
    for i = 1:nL
        dXdXis{i} = Xs{i} .* (Xs{i} - 1);
    end
    dedXs{nL} = 2 * (Xs{nL} - Y);
    dedXis{nL} = dedXs{nL} .* dXdXis{nL};
    for i = (nL - 1):(-1):1
        dedXs{i} = dedXis{i + 1} * Ws{i + 1}';
        dedXis{i} = dedXs{i} .* dXdXis{i};
    end
    dedWs{1} = X' * dedXis{1};
    for i = 2:nL
        dedWs{i} = Xs{i - 1}' * dedXis{i};
    end    
    for i = 1:nL
        dedbs{i} = sum(dedXis{i});
    end    

    % změna parametrů NN

    LR = 0.01;
    for i = 1:nL
        Ws{i} = Ws{i} - LR * dedWs{i};
        bs{i} = bs{i} - LR * dedbs{i};
    end
    
end