Skip to content

Latest commit

 

History

History
95 lines (53 loc) · 5.47 KB

File metadata and controls

95 lines (53 loc) · 5.47 KB

Panimula sa Neural Networks: Perceptron

Isa sa mga unang pagsubok na lumikha ng isang bagay na katulad ng modernong neural network ay ginawa ni Frank Rosenblatt mula sa Cornell Aeronautical Laboratory noong 1957. Ito ay isang hardware implementation na tinawag na "Mark-1", na idinisenyo upang makilala ang mga simpleng geometric na hugis tulad ng tatsulok, parisukat, at bilog.

Frank Rosenblatt The Mark 1 Perceptron

Mga larawan mula sa Wikipedia

Ang input na imahe ay kinakatawan ng 20x20 photocell array, kaya't ang neural network ay mayroong 400 inputs at isang binary output. Ang simpleng network ay naglalaman ng isang neuron, na tinatawag ding threshold logic unit. Ang mga weights ng neural network ay kumilos tulad ng mga potentiometer na kailangang manu-manong ayusin sa panahon ng training phase.

✅ Ang potentiometer ay isang device na nagbibigay-daan sa user na ayusin ang resistance ng isang circuit.

Sinulat ng New York Times tungkol sa perceptron noong panahong iyon: ang embryo ng isang electronic computer na [ang Navy] inaasahan na makakalakad, makakapagsalita, makakakita, makakasulat, makakapagparami ng sarili, at magiging malay sa kanyang pag-iral.

Modelo ng Perceptron

Ipagpalagay natin na mayroon tayong N features sa ating modelo, kung saan ang input vector ay magiging isang vector na may sukat na N. Ang perceptron ay isang modelo ng binary classification, ibig sabihin, kaya nitong makilala ang dalawang klase ng input data. Ipagpalagay natin na para sa bawat input vector x, ang output ng ating perceptron ay magiging +1 o -1, depende sa klase. Ang output ay kakalkulahin gamit ang formula:

y(x) = f(wTx)

kung saan ang f ay isang step activation function

Pagsasanay ng Perceptron

Upang sanayin ang isang perceptron, kailangan nating hanapin ang weights vector w na nagkaklasipika ng karamihan sa mga values nang tama, ibig sabihin, nagreresulta sa pinakamaliit na error. Ang error na E ay tinutukoy ng perceptron criterion sa ganitong paraan:

E(w) = -∑wTxiti

kung saan:

  • ang sum ay kinukuha sa mga training data points i na nagreresulta sa maling classification
  • xi ay ang input data, at ti ay alinman sa -1 o +1 para sa negative at positive examples ayon sa pagkakabanggit.

Ang criterion na ito ay itinuturing bilang isang function ng weights w, at kailangan natin itong i-minimize. Madalas, ginagamit ang isang method na tinatawag na gradient descent, kung saan nagsisimula tayo sa ilang initial weights w(0), at pagkatapos sa bawat hakbang ay ina-update ang weights ayon sa formula:

w(t+1) = w(t) - η∇E(w)

Dito, ang η ay tinatawag na learning rate, at ang ∇E(w) ay tumutukoy sa gradient ng E. Pagkatapos kalkulahin ang gradient, makakakuha tayo ng:

w(t+1) = w(t) + ∑ηxiti

Ang algorithm sa Python ay ganito:

def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):

    weights = [0,0,0] # Initialize weights (almost randomly :)
        
    for i in range(num_iterations):
        pos = random.choice(positive_examples)
        neg = random.choice(negative_examples)

        z = np.dot(pos, weights) # compute perceptron output
        if z < 0: # positive example classified as negative
            weights = weights + eta*weights.shape

        z  = np.dot(neg, weights)
        if z >= 0: # negative example classified as positive
            weights = weights - eta*weights.shape

    return weights

Konklusyon

Sa araling ito, natutunan mo ang tungkol sa perceptron, na isang binary classification model, at kung paano ito sanayin gamit ang weights vector.

🚀 Hamon

Kung nais mong subukang gumawa ng sarili mong perceptron, subukan ang lab na ito sa Microsoft Learn na gumagamit ng Azure ML designer.

Review at Pag-aaral sa Sarili

Upang makita kung paano natin magagamit ang perceptron upang lutasin ang isang simpleng problema pati na rin ang mga totoong problema, at upang ipagpatuloy ang pag-aaral - pumunta sa Perceptron notebook.

Narito ang isang kawili-wiling artikulo tungkol sa perceptrons.

Sa araling ito, nag-implement tayo ng perceptron para sa binary classification task, at ginamit natin ito upang magklasipika sa pagitan ng dalawang handwritten digits. Sa lab na ito, hinihiling sa iyo na lutasin ang problema ng digit classification nang buo, ibig sabihin, tukuyin kung aling digit ang pinaka-malamang na tumutugma sa isang ibinigay na imahe.