Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

AI study/ํ†ต๊ณ„ & ML & DL

[๋”ฅ๋Ÿฌ๋‹] ํผ์…‰ํŠธ๋ก  Perceptron (feat.ํŒŒ์ดํ† ์น˜)

๊ฐ์ž ๐Ÿฅ” 2021. 7. 19. 21:24
๋ฐ˜์‘ํ˜•

1. ํผ์…‰ํŠธ๋ก  (Percepttron)

  • ์ƒ๋ฌผํ•™์  ๋‰ด๋Ÿฐ์„ ๋ณธ๋–  ๋งŒ๋“  ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์‹ ๊ฒฝ๋ง์˜ ๊ตฌ์กฐ
  • ์ž…๋ ฅ์‹ ํ˜ธ์™€ ์ถœ๋ ฅ์‹ ํ˜ธ๊ฐ€ ํผ์…‰ํŠธ๋ก ์—์„œ ๊ฐ๊ฐ ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’์— ํ•ด๋‹น
  • ์ž…๋ ฅ(x), ์ถœ๋ ฅ(y), ๊ฐ€์ค‘์น˜(w), ์ ˆํŽธ(b), ํ™œ์„ฑํ™”ํ•จ์ˆ˜(f) 

  • ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด

  • ์ธ๊ณต๋‰ด๋Ÿฐ์— ๋ณด๋‚ด์ง€๋Š” ๊ฐ’ x๋Š” ๊ฐ๊ฐ์˜ ๊ฐ€์ค‘์น˜ w์™€ ํ•จ๊ป˜ ์ตœ์ข… ์ข…์ฐฉ์ง€์ธ ์ธ๊ณต ๋‰ด๋Ÿฐ์— ์ „๋‹ฌ
  • ํ™œ์„ฑํ™”ํ•จ์ˆ˜ f๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์„ ํ˜•ํ•จ์ˆ˜
  • wx+b ๋Š” ์„ ํ˜•ํ•จ์ˆ˜ (์•„ํ•€๋ณ€ํ™˜์ด๋ผ๊ณ  ๋ถ€๋ฆ„)
  • ์ฆ‰, ํผ์…‰ํŠธ๋ก ์€ ์„ ํ˜•ํ•จ์ˆ˜์™€ ๋น„์„ ํ˜•ํ•จ์ˆ˜์˜ ์กฐํ•ฉ
  • ์ ˆํŽธ(b)๋Š” ๊ทธ๋ฆผ์ด๋‚˜ ์ˆ˜์‹์—์„œ ๋งŽ์ด ์ƒ๋žต๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ b๋˜ํ•œ ๋”ฅ๋Ÿฌ๋‹์ด ์ตœ์ ์˜ ๊ฐ’์„ ์ฐพ์•„์•ผํ•  ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜

โ–ถ ์•„๋ž˜๋Š” ํŒŒ์ดํ† ์น˜๋กœ ๊ตฌํ˜„ํ•œ ๊ฐ„๋‹จํ•œ ํผ์…‰ํŠธ๋ก  ์ฝ”๋“œ
(์ฐธ๊ณ ) https://github.com/rickiepark/nlp-with-pytorch

import torch
import torch.nn as nn

class Perceptron(nn.Module):
    """ ํผ์…‰ํŠธ๋ก ์€ ํ•˜๋‚˜์˜ ์„ ํ˜• ์ธต์ž…๋‹ˆ๋‹ค """

    def __init__(self, input_dim):
        """
        ๋งค๊ฐœ๋ณ€์ˆ˜:
            input_dim (int): ์ž…๋ ฅ ํŠน์„ฑ์˜ ํฌ๊ธฐ
        """
        super(Perceptron, self).__init__()
        self.fc1 = nn.Linear(input_dim, 1)

    def forward(self, x_in):
        """ํผ์…‰ํŠธ๋ก ์˜ ์ •๋ฐฉํ–ฅ ๊ณ„์‚ฐ
        
        ๋งค๊ฐœ๋ณ€์ˆ˜:
            x_in (torch.Tensor): ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ…์„œ
                x_in.shape๋Š” (batch, num_features)์ž…๋‹ˆ๋‹ค.
        ๋ฐ˜ํ™˜๊ฐ’:
            ๊ฒฐ๊ณผ ํ…์„œ. tensor.shape๋Š” (batch,)์ž…๋‹ˆ๋‹ค.
        """
        return torch.sigmoid(self.fc1(x_in))
  • ํŒŒ์ดํ† ์น˜๋Š” torch.nn ๋ชจ๋“ˆ ์•„๋ž˜ ๊ฐ€์ค‘์น˜์™€ ์ ˆํŽธ์— ํ•„์š”ํ•œ ๋ถ€๊ฐ€ ์ž‘์—…๊ณผ ์•„ํ•€๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” Linear  ํด๋ž˜์Šค ์ œ๊ณต

 

2. ๋‹จ์ธต ํผ์…‰ํŠธ๋ก  (Single-Layer Perceptron)

  • ํ•œ๊ฐœ์˜ ๊ณ„์ธต์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํผ์…‰ํŠธ๋ก ์„ ๋‹จ์ธต ํผ์…‰ํŠธ๋ก ์ด๋ผ๊ณ  ํ•จ
  • ๋ณด๋‚ด๋Š” ๊ฐ’๊ณผ ์ถœ๋ ฅํ•˜๋Š” ๋‹จ๊ณ„, ๋”ฑ ๋‘ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง
    • input layer / output layer ๋‘ ๊ฐœ์˜ ์ธต์œผ๋กœ ์ด๋ฃจ์–ด์ง
  • ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋ณดํ†ต layer ๋ผ๊ณ  ๋ถ€๋ฆ„
  • ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹จ์ธต ํผ์…‰ํŠธ๋ก ์€ ์•„๋ž˜์™€ ๊ฐ™์Œ

 

3. ๋‹ค์ธต ํผ์…‰ํŠธ๋ก  (Multi-Layer Perceptron, MLP)

  • ์ž…๋ ฅ์ธต๊ณผ ์ถœ๋ ฅ์ธต ์‚ฌ์ด์— ์ค‘๊ฐ„์ธต์ด ๋” ์กด์žฌํ•˜๋Š” ์‹ ๊ฒฝ๋ง ๊ตฌ์กฐ
  • '์€๋‹‰์ธต (Hidden Layer)' ์กด์žฌ

https://wikidocs.net/24958

  • ์€๋‹‰์ธต์ด ๋‘๊ฐœ ์ด์ƒ์ธ ์‹ ๊ฒฝ๋ง = ์‹ฌ์ธต์‹ ๊ฒฝ๋ง (Deep Nueural Network, DNN)

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋Š” ์Šค์Šค๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์ฐพ์•„๋‚ด๋„๋ก ์ž๋™ํ™”์‹œ์ผœ์•ผํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์„ 'ํ•™์Šต (Training)' ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ์†์‹คํ•จ์ˆ˜(Loss Function)๊ณผ ์˜ตํ‹ฐ๋งˆ์ด์ €(optimizer)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ถ”ํ›„ ์ด ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜์ž.

 

์ฐธ๊ณ ๋ฌธํ—Œ) https://wikidocs.net/24958

 

์œ„ํ‚ค๋…์Šค

์˜จ๋ผ์ธ ์ฑ…์„ ์ œ์ž‘ ๊ณต์œ ํ•˜๋Š” ํ”Œ๋žซํผ ์„œ๋น„์Šค

wikidocs.net

 

๋ฐ˜์‘ํ˜•