ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AI] ์‹ ๊ฒฝ๋ง๊ณผ ํ™œ์„ฑํ™”ํ•จ์ˆ˜ / ํ–‰๋ ฌ์˜ ๊ณฑ / ์‹ ๊ฒฝ๋ง์˜ ๊ตฌํ˜„(๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹)
    ๐Ÿ’ปProgramming/AI 2023. 12. 17. 01:34

    ๐Ÿ”— ์‹ ๊ฒฝ๋ง

    ์‹ ๊ฒฝ๋ง์˜ ์˜ˆ

    • ์‹ ๊ฒฝ๋ง์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค. ์€๋‹‰์ธต์˜ ๋‰ด๋Ÿฐ์€ ์ž…๋ ฅ์ธต์ด๋‚˜ ์ถœ๋ ฅ์ธต๊ณผ ๋‹ฌ๋ฆฌ ์‚ฌ๋žŒ์˜ ๋ˆˆ์—๋Š” ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์€๋‹‰์ธต์ด๋ผ๊ณ  ํ•œ๋‹ค.
     

    [AI] ํผ์…‰ํŠธ๋ก ๊ณผ ํผ์…‰ํŠธ๋ก ์˜ ๊ตฌํ˜„ / ํผ์…‰ํŠธ๋ก ์˜ ํ•œ๊ณ„ (๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹)

    ๐Ÿ”— ํผ์…‰ํŠธ๋ก  ๋‹ค์ˆ˜์˜ ์‹ ํ˜ธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ•˜๋‚˜์˜ ์‹ ํ˜ธ๋ฅผ ์ถœ๋ ฅ ํผ์…‰ํŠธ๋ก ์˜ ์‹ ํ˜ธ๋Š” 'ํ๋ฅธ๋‹ค/์•ˆํ๋ฅธ๋‹ค(1/0)'์˜ ๋‘ ๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์›์„ ๋‰ด๋Ÿฐ ํ˜น์€ ๋…ธ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ž…๋ ฅ ์‹ ํ˜ธ๊ฐ€ ๋‰ด

    suucong.tistory.com

    •  ํผ์…‰ํŠธ๋ก ์€ ๋ณต์žกํ•œ ํ•จ์ˆ˜๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋กœ ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ์ ์ ˆํžˆ ์ •ํ•˜๋Š” ์ž‘์—…์€ ์—ฌ์ „ํžˆ ์‚ฌ๋žŒ์ด ์ˆ˜๋™์œผ๋กœํ•œ๋‹ค. ์‹ ๊ฒฝ๋ง์€ ์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•ด์ค€๋‹ค. -> ๊ฐ€์ค‘์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ ์ ˆํ•œ ๊ฐ’์„ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ํ•™์Šตํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์‹ ๊ฒฝ๋ง์˜ ์ค‘์š”ํ•œ ์„ฑ์งˆ์ด๋‹ค.

    โœจ ํผ์…‰ํŠธ๋ก 

    ํŽธํ–ฅ์„ ๋ช…์‹œํ•œ ํผ์…‰ํŠธ๋ก ์˜ ์ˆ˜์‹
    ํŽธํ–ฅ์„ ๋ช…์‹œํ•œ ํผ์…‰ํŠธ๋ก 

    • ์œ„์˜ ์ˆ˜์‹์„ ๋” ๊ฐ„๊ฒฐํ•œ ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•˜๋ฉด

    • ์ด๋Ÿฐ ์ˆ˜์‹์ด๋‹ค. 0์„ ๋„˜์œผ๋ฉด 1์„ ์ถœ๋ ฅํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์„ ์ถœ๋ ฅํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์œ„์˜ ์ˆ˜์‹์„ ๋ณด๋ฉด ์ž…๋ ฅ ์‹ ํ˜ธ์˜ ์ดํ•ฉ์ด h(x)๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์ณ ๋ณ€ํ™˜๋˜์–ด, ๊ทธ ๋ณ€ํ™˜๋œ ๊ฐ’์ด y์˜ ์ถœ๋ ฅ์ด ๋จ์„ ๋ณด์—ฌ์ค€๋‹ค. ์ •๋ฆฌํ•˜๋ฉด h(x) ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ์ด 0์„ ๋„˜์œผ๋ฉด 1์„ ๋Œ๋ ค์ฃผ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์„ ๋Œ๋ ค์ค€๋‹ค. 

    โœจ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์˜ ๋“ฑ์žฅ

    • ์œ„์—์„œ h(x)๊ฐ€ ๋“ฑ์žฅํ–ˆ๋Š”๋ฐ, ์ด์ฒ˜๋Ÿผ ์ž…๋ ฅ ์‹ ํ˜ธ์˜ ์ดํ•ฉ์„ ์ถœ๋ ฅ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. 
    • ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ผ๋Š” ์ด๋ฆ„๊ณผ ๊ฐ™์ด ํ™œ์„ฑํ™”ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ์‹ ํ˜ธ์˜ ์ดํ•ฉ์ด ํ™œ์„ฑํ™”๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€๋ฅผ ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 
    • ์œ„์˜ ์‹์€ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ณฑํ•ด์ง„ ์ž…๋ ฅ ์‹ ํ˜ธ์˜ ์ดํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ , ๊ทธ ํ•ฉ์„ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์— ์ž…๋ ฅํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š” 2๋‹จ๊ณ„๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. 
    • ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ 2๊ฐœ์˜ ์‹์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 

    ํ™œ์„ฑํ™” ํ•จ์ˆ˜
    ํ™œ์„ฑํ™” ํ•จ์ˆ˜์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •


    ๐Ÿ”— ํ™œ์„ฑํ™” ํ•จ์ˆ˜

    • ํผ์…‰ํŠธ๋ก ์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ์ž„๊ณ„๊ฐ’์„ ๊ฒฝ๊ณ„๋กœ ์ถœ๋ ฅ์ด ๋ฐ”๋€Œ๋Š”๋ฐ, ์ด๋Ÿฐ ํ•จ์ˆ˜๋ฅผ ๊ณ„๋‹จ ํ•จ์ˆ˜(step function)์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, "ํผ์…‰ํŠธ๋ก ์€ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ๊ณ„๋‹จ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค"๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ํผ์…‰ํŠธ๋ก ๊ณผ ์‹ ๊ฒฝ๋ง์˜ ๊ฐ€์žฅ ์ฃผ๋œ ์ฐจ์ด๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜์ด๋‹ค. ํ™œ์„ฑํ™” ํ•จ์ˆ˜์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. 

    ๐Ÿ“ 1. ๊ณ„๋‹จ ํ•จ์ˆ˜(step function)

    ๊ณ„๋‹จ ํ•จ์ˆ˜

    • ํผ์…‰ํŠธ๋ก  ๋‚ด ์ž…๋ ฅ๊ฐ’์˜ ํ•ฉ์ด 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด 0, ํฌ๋ฉด 1์„ ์ถœ๋ ฅํ•˜๋Š” ์—ญํ• . → ๋น„์„ ํ˜• ํ•จ์ˆ˜

    โœจ ๊ณ„๋‹จ ํ•จ์ˆ˜์˜ ๊ตฌํ˜„

    def step_function(x):
    	y = x > 0
        return y.astype(np.int)

    ๐Ÿ“ 2. ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜(Sigmoid ํ•จ์ˆ˜)

    ๋น„์„ ํ˜• ํ•จ์ˆ˜๋กœ ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์ด๋ฉฐ ์ž…๋ ฅ์— ๋”ฐ๋ผ ์ถœ๋ ฅ์ด ์—ฐ์†์ ์œผ๋กœ ๋ณ€ํ™”ํ•œ๋‹ค. 

    • ํŠน์ง•
      • ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ์ถœ๋ ฅ๊ฐ’์ด ์‹ค์ˆ˜๊ฐ’์œผ๋กœ ์ •์˜(=Soft Decision)
      • ๊ฐ’์ด ์ž‘์•„์งˆ์ˆ˜๋ก 0, ์ปค์งˆ์ˆ˜๋ก 1์— ์ˆ˜๋ ด
      • ์ถœ๋ ฅ์ด 0~1์‚ฌ์ด๋กœ ํ™•๋ฅ  ํ‘œํ˜„ ๊ฐ€๋Šฅ(=Binary Classification)
      • Vanishing Gradinet(๊ธฐ์šธ๊ธฐ ์†์‹ค) ๋ฌธ์ œ ์กด์žฌ

    โœจ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์˜ ๊ตฌํ˜„

    def sigmoid(x):
    	return 1 / (1 + np.exp(-x))

    โœจ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์™€ ๊ณ„๋‹จ ํ•จ์ˆ˜์˜ ๋น„๊ต

    • ๊ฐ€์žฅ ํฐ ์ฐจ์ด: ๋งค๋„๋Ÿฌ์›€
    • ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์ด๋ฉฐ ์ž…๋ ฅ์— ๋”ฐ๋ผ ์ถœ๋ ฅ์ด ์—ฐ์†์ ์œผ๋กœ ๋ณ€ํ™”
    • ๊ณ„๋‹จ ํ•จ์ˆ˜๋Š” 0์„ ๊ฒฝ๊ณ„๋กœ ์ถœ๋ ฅ์ด ๊ฐ‘์ž๊ธฐ ๋ฐ”๋€Œ์–ด๋ฒ„๋ฆผ. 
    • ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์˜ ์ด ๋งค๋ˆํ•จ์ด ์‹ ๊ฒฝ๋ง ํ•™์Šต์—์„œ ์•„์ฃผ ์ค‘์š”ํ•œ ์—ญํ• 
    • ๊ณตํ†ต์ : ์ž…๋ ฅ์ด ์ž‘์„ ๋•Œ์˜ ์ถœ๋ ฅ์€ 0์— ๊ฐ€๊น๊ณ , ํด ๋•Œ์˜ ์ถœ๋ ฅ์€ 1์— ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๊ตฌ์กฐ / ๊ฐ’์ด ์•„๋ฌด๋ฆฌ ์ž‘๊ฑฐ๋‚˜ ์ปค๋„ ์ถœ๋ ฅ์€ 0๊ณผ 1 ์‚ฌ์ด

    โœจ ๋น„์„ ํ˜• ํ•จ์ˆ˜

    • ์„ ํ˜• ํ•จ์ˆ˜: ์ถœ๋ ฅ์ด ์ž…๋ ฅ๊ฐ’์˜ ์ƒ์ˆ˜๋ฐฐ๋งŒํผ ๋ณ€ํ•˜๋Š” ํ•จ์ˆ˜
    • ๋น„์„ ํ˜• ํ•จ์ˆ˜: ์„ ํ˜•์ด ์•„๋‹Œ ํ•จ์ˆ˜๋กœ ์ง์„  1๊ฐœ๋กœ๋Š” ๊ทธ๋ฆด ์ˆ˜ ์—†๋Š” ํ•จ์ˆ˜
    • ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์—์„œ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” “๋น„์„ ํ˜• ํ•จ์ˆ˜”์—ฌ์•ผ ํ•œ๋‹ค.
    • ์„ ํ˜• ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์‹ ๊ฒฝ๋ง์˜ ์ธต์„ ๊นŠ๊ฒŒ ์Œ“๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ h(x) = cx๋ผ ํ•  ๋•Œ, y(x) = h(h(x)) = c * c * c * x = c^3x → y=ax์—์„œ a =c^3๊ณผ ๊ฐ™๋‹ค. ์ฆ‰ ์œ„์˜ ๋งํ•œ ์„ ํ˜•ํ•จ์ˆ˜์˜ ์˜๋ฏธ์— ๋”ฑ ๋“ค์–ด๋งž๋Š”๋‹ค. → 3์ธต์ด๋‚˜ ์Œ“์•˜๋Š”๋ฐ 1์ธต๋งŒ ์Œ“์€ ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ → ๋น„์„ ํ˜•ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์ž^^

    ๐Ÿ“ 3. ReLU ํ•จ์ˆ˜(Rectified Linear Unit, ReLU)

    • y = x์ธ ์„ ํ˜•ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ๊ฐ’ 0 ์ดํ•˜์—์„œ๋ถ€ํ„ฐ rectified(์ •๋ฅ˜)๋œ ํ•จ์ˆ˜ → ํผ์…‰ํŠธ๋ก  ๋‚ด ์ž…๋ ฅ๊ฐ’์˜ ์ดํ•ฉ์ด 0๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ 0, ํฌ๋ฉด ๊ทธ ๊ฐ’ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜.
    • ํŠน์ง•
      • ๋”ฅ๋Ÿฌ๋‹ ๋ถ„์•ผ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜
      • ์ž…๋ ฅ๊ฐ’์ด ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ์ถœ๋ ฅ๊ฐ’๊ณผ ๋ฏธ๋ถ„๊ฐ’์„ ๋ชจ๋‘ 0์œผ๋กœ ๊ฐ•์ œํ•˜๋ฏ€๋กœ ์ฃฝ์€ ๋‰ด๋Ÿฐ์„ ํšŒ์ƒํ•˜๋Š”๋ฐ ์–ด๋ ค์›€ ์กด์žฌ
      • ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•˜๊ณ  ์—ฐ์‚ฐ์ด ํ•„์š” ์—†์ด ์ž„๊ณ„๊ฐ’(์–‘์ˆ˜/์Œ์ˆ˜ ์—ฌ๋ถ€)๋งŒ ํ™œ์šฉํ•˜๋ฏ€๋กœ ์—ฐ์‚ฐ์†๋„ ๋น ๋ฆ„

    ๐Ÿ“ 4. Sign ํ•จ์ˆ˜

    Sign ํ•จ์ˆ˜

    • ํผ์…‰ํŠธ๋ก  ๋‚ด ์ž…๋ ฅ๊ฐ’์˜ ์ดํ•ฉ์ด 0๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•˜๊ณ , 0๋ณด๋‹ค ํด๊ฒฝ์šฐ 1์„ ์ถœ๋ ฅํ•˜๋Š” ์—ญํ•  → ๋น„์„ ํ˜• ํ•จ์ˆ˜

    ํ•œ๊ณ„: ๋ฐ์ดํ„ฐ์™€ ๊ฒฐ์ •๊ฒฝ๊ณ„(Decision Boundary) ๊ฐ„ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ํ•œ๊ณ„ ์กด์žฌ → ์•„๋ž˜์˜ ์ž๋ฃŒ์ฒ˜๋Ÿผ ์šฐ์ธก ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋” ์ข‹์€ ๊ฒฐ์ • ๊ฒฐ๊ณ„๊ฐ€ ์žˆ์„์ˆ˜๋„ ์žˆ๋Š”๋ฐ ๊ณ ๋ ค ์•ˆํ•จ.

    • ๊ฒฐ์ • ๊ฒฐ๊ณ„: ํด๋ž˜์Šค๋ณ„๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๊ฐ„ ๊ฑฐ๋ฆฌ๋ฅผ ๋งˆ์ง„(margin)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋งˆ์ง„์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ์ข‹์€ ๊ฒฐ์ •๊ฒฝ๊ณ„

    ๋งˆ์ง„๊ณผ ๊ฒฐ์ •๊ฒฝ๊ณ„


    ๐Ÿ”— ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ๊ณ„์‚ฐ

    • ๋‹ค์ฐจ์› ๋ฐฐ์—ด: ์ˆซ์ž์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ˆซ์ž๊ฐ€ ํ•œ ์ค„๋กœ ๋Š˜์–ด์„  ๊ฒƒ์ด๋‚˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋Š˜์–ด๋†“์€ ๊ฒƒ. ์ผ๋ฐ˜ํ™”ํ•˜๋ฉด N์ฐจ์›์œผ๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ
    • 2์ฐจ์› ๋ฐฐ์—ด์€ ํ–‰๋ ฌ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ๊ฐ€๋กœ๋ฅผ ํ–‰, ์„ธ๋กœ๋ฅผ ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. 

    ํ–‰๋ ฌ์˜ ๊ณฑ

    โœจ ํ–‰๋ ฌ์˜ ๊ณฑ์˜ ๊ตฌํ˜„

    A = np.array([1, 2], [3, 4])
    B = np.array([5, 6], [7, 8])
    np.dot(A, B)
    • np.dot(A, B)์€ ์ž…๋ ฅ์ด 1์ฐจ์›์ด๋ฉด ๋ฒกํ„ฐ๋ฅผ, 2์ฐจ์› ๋ฐฐ์—ด์ด๋ฉด ํ–‰๋ ฌ ๊ณฑ์„ ๊ณ„์‚ฐ. ๋˜ํ•œ, ํ–‰๋ ฌ์˜ ๊ณฑ์€ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— np.dot(A, B)์™€ np.dot(B, A)๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

    โœจ ํ–‰๋ ฌ์˜ ํ˜•์ƒ(shape)

    • ํ–‰๋ ฌ์˜ ๊ณฑ์„ ํ•  ๋•Œ๋Š” ํ–‰๋ ฌ์˜ ํ˜•์ƒ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ํ–‰๋ ฌ A์˜ 1๋ฒˆ์งธ ์ฐจ์›์˜ ์›์†Œ ์ˆ˜(์—ด ์ˆ˜)์™€ ํ–‰๋ ฌ B์˜ 0๋ฒˆ์งธ ์ฐจ์›์˜ ์›์†Œ ์ˆ˜(ํ–‰ ์ˆ˜)๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅด๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

    ํ–‰๋ ฌ์˜ ํ˜•์ƒ

    • ๋‘ ํ–‰๋ ฌ ์ค‘ ํ•˜๋‚˜์˜ ํ–‰๋ ฌ์ด 1์ฐจ์› ๋ฐฐ์—ด์ผ ๋•Œ๋„ ๋Œ€์‘ํ•˜๋Š” ์ฐจ์›์˜ ์›์†Œ ์ˆ˜๋ฅผ ์ผ์น˜์‹œ์ผœ๋ผ ๋ผ๋Š” ์›์น™์ด ๋˜‘๊ฐ™์ด ์ ์šฉ๋œ๋‹ค.


    ๐Ÿ”— 3์ธต ์‹ ๊ฒฝ๋ง ๊ตฌํ˜„

    3์ธต ์‹ ๊ฒฝ๋ง

    ์ž…๋ ฅ์ธต์€ 2๊ฐœ, ์ฒซ ๋ฒˆ์งธ ์€๋‹‰์ธต์€ 3๊ฐœ, ๋‘ ๋ฒˆ์งธ ์€๋‹‰์ธต์€ 2๊ฐœ, ์ถœ๋ ฅ์ธต์€ 2๊ฐœ์˜ ๋‰ด๋Ÿฐ์œผ๋กœ ๊ตฌ์„ฑ

    โœจ ์‹ ๊ฒฝ๋ง์˜ ํ‘œ๊ธฐ

    ์‹ ๊ฒฝ๋ง์˜ ํ‘œ๊ธฐ

    ๐Ÿ“ ๊ฐ ์ธต์˜ ์‹ ํ˜ธ ์ „๋‹ฌ ๊ตฌํ˜„

    โœจ ์ž…๋ ฅ์ธต์—์„œ 1์ธต์œผ๋กœ ์‹ ํ˜ธ ์ „๋‹ฌ

    ์ž…๋ ฅ์ธต์—์„œ 1์ธต์œผ๋กœ ์‹ ํ˜ธ ์ „๋‹ฌ

    x = np.array([1.0, 0.5])
    w1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
    B1 = np.array([0.1, 0.2, 0.3])
    
    A1 = np.dot(X, W1) + B1

    ์ž…๋ ฅ์ธต์—์„œ 1์ธต์œผ๋กœ์˜ ์‹ ํ˜ธ ์ „๋‹ฌ

    ์€๋‹‰์ธต์—์„œ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์„ a๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ํ™œ์„ฑํ™” ํ•จ์ˆ˜ h()๋กœ ๋ณ€ํ™˜๋œ ์‹ ํ˜ธ๋ฅผ z๋กœ ํ‘œ๊ธฐ. ์—ฌ๊ธฐ์—์„  ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ.

    Z1 = sigmoid(A1)

    โœจ 1์ธต์—์„œ 2์ธต์œผ๋กœ ์‹ ํ˜ธ ์ „๋‹ฌ

    1์ธต์—์„œ 2์ธต์œผ๋กœ ์‹ ํ˜ธ ์ „๋‹ฌ

    W2 = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0,6]])
    B2 = np.array([0.1, 0.2])
    
    A2 = np.dot(Z1, W2) + B2
    Z2 = sigmoid(A2)

    1์ธต์˜ ์ถœ๋ ฅ Z1์ด 2์ธต์˜ ์ž…๋ ฅ์ด ๋œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ์กฐ๊ธˆ ์ „์˜ ๊ตฌํ˜„๊ณผ ๊ฐ™๋‹ค. 

    โœจ 2์ธต์—์„œ ์ถœ๋ ฅ์ธต์œผ๋กœ์˜ ์‹ ํ˜ธ ์ „๋‹ฌ

    2์ธต์—์„œ ์ถœ๋ ฅ์ธต์œผ๋กœ์˜ ์‹ ํ˜ธ ์ „๋‹ฌ

    def identity_function(x):
    	return x
    
    W3 = np.array([[0.1, 0.3], [0.2, 0.4]])
    B3 = np.array([0.1, 0.2])
    
    A3 = np.dot(Z2, W3) + B3
    Y = identity_function(A3)

    ์ถœ๋ ฅ์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ "ํ•ญ๋“ฑ ํ•จ์ˆ˜"๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํ•ญ๋“ฑ ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋˜ํ•œ ์ถœ๋ ฅ์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‹œ๊ทธ๋งˆ๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•˜์—ฌ ์€๋‹‰์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์ธ h()์™€๋Š” ๋‹ค๋ฆ„์„ ๋ช…์‹œ

    (์ถœ๋ ฅ์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ํ’€๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ์˜ ์„ฑ์งˆ์— ๋งž๊ฒŒ ์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ๊ท€์—๋Š” ํ•ญ๋“ฑ ํ•จ์ˆ˜, 2ํด๋ž˜์Šค ๋ถ„๋ฅ˜์—์„œ๋Š” ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜, ๋‹ค์ค‘ ํด๋ž˜์Šค ๋ถ„๋ฅ˜์—์„œ๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ )

    โœจ ๊ตฌํ˜„ ์ •๋ฆฌ

    def init_network():
    	network = {}
    	network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
    	network['b1'] = np.array([0.1, 0.2, 0.3])
        network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0,6]])
    	network['b2'] = np.array([0.1, 0.2])
        network['W2'] = np.array([[0.1, 0.3], [0.2, 0.4]])
    	network['b3'] = np.array([0.1, 0.2])
        
        return network
    
    def forward(network, x):
    	W1, W2, W3 = network['W1'], network['W2'], network['W3']
        b1, b2, b3 = network['b1'], network['b2'], network['b3']
        
        a1 = np.dot(x, W1) + b1
        z1 = sigmoid(a1)
        a2 = np.dot(z1, W2) + b2
        z2 = sigmoid(a2)
        a3 = np.dot(z2, W3) + b3
        y = identity_function(a3) 
        
        return y
        
    network = init_network()
    x = np.array([1.0, 0.5])
    y = forward(network, x)
    
    print(y)

    init_network(): ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ด๋“ค์„ ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜์ธ  network์— ์ €์žฅ

    forward(): ์ž…๋ ฅ ์‹ ํ˜ธ๋ฅผ ์ถœ๋ ฅ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ฒ˜๋ฆฌ๊ณผ์ •์„ ๋ชจ๋‘ ๊ตฌํ˜„(์ˆœ๋ฐฉํ–ฅ)


    ๐Ÿ”— ์ถœ๋ ฅ์ธต ์„ค๊ณ„ํ•˜๊ธฐ

    ์‹ ๊ฒฝ๋ง์€ ๋ถ„๋ฅ˜์™€ ํšŒ๊ท€ ๋ชจ๋‘์— ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ๋ฌธ์ œ๋ƒ์— ๋”ฐ๋ผ ์ถœ๋ ฅ์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๊ท€์—๋Š” ํ•ญ๋“ฑ ํ•จ์ˆ˜๋ฅผ, ๋ถ„๋ฅ˜์—๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

    ๊ธฐ๊ณ„ํ•™์Šต ๋ฌธ์ œ๋Š” ๋ถ„๋ฅ˜์™€ ํšŒ๊ท€๋กœ ๋‚˜๋‰œ๋‹ค. ๋ถ„๋ฅ˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š ํด๋ž˜์Šค์— ์†ํ•˜๋Š๋ƒ๋Š” ๋ฌธ์ œ์ด๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์„ฑ๋ณ„์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ) ํšŒ๊ท€๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์—์„œ ์—ฐ์†์ ์ธ ์ˆ˜์น˜๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„์† ์ธ๋ฌผ์˜ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฌธ์ œ)

    ๐Ÿ“ ํ•ญ๋“ฑ ํ•จ์ˆ˜์™€ ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜

    โœจ ํ•ญ๋“ฑ ํ•จ์ˆ˜

    ์ž…๋ ฅ์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ

    โœจ ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜

    • N๊ฐ€์ง€ ์ถœ๋ ฅ๊ฐ’์„ ๊ฐ–๋Š” ํ•จ์ˆ˜๋กœ์จ ์ž…๋ ฅ๊ฐ’์„ N๊ฐ€์ง€ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” Multi-class Classification์— ์ฃผ๋กœ ์‚ฌ์šฉ
    • ์ถœ๋ ฅ๊ฐ’ N๊ฐœ
    • ์ž…๋ ฅ๊ฐ’์„ ๊ฐ๊ฐ ์ง€์ˆ˜ํ•จ์ˆ˜๋กœ ์ทจํ•˜๊ณ , ์ด๋ฅผ ์ •๊ทœํ™”(=์ดํ•ฉ์„ 1๋กœ ๋งŒ๋“ฆ)
    • ๋ชจ๋“  ์ถœ๋ ฅ๊ฐ’์˜ ํ•ฉ์€ ๋ฐ˜๋“œ์‹œ 1
    • N๊ฐ€์ง€ ์ค‘ ํ•œ ๊ฐ€์ง€์— ์†ํ•  ํ™•๋ฅ  ํ‘œํ˜„ ๊ฐ€๋Šฅ → Multi-class Classification

    ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜์˜ ์‹

    exp๋Š” ์ž์—ฐ ์ƒ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , n์€ ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜, yk๋Š” ๊ทธ ์ค‘ k๋ฒˆ์งธ ์ถœ๋ ฅ์ž„์„ ์˜๋ฏธ. 

    ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜

    ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜์˜ ๋ชจ๋“  ์ถœ๋ ฅ์€ ๋ชจ๋“  ์ž…๋ ฅ ์‹ ํ˜ธ๋กœ๋ถ€ํ„ฐ ํ™”์‚ดํ‘œ๋ฅผ ๋ฐ›๋Š”๋‹ค. ์‹์˜ ๋ถ„๋ชจ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ถœ๋ ฅ์ธต์˜ ๊ฐ ๋‰ด๋Ÿฐ์ด ๋ชจ๋“  ์ž…๋ ฅ ์‹ ํ˜ธ์—์„œ ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

    โœจ ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜์˜ ๊ตฌํ˜„

    def softmax(a):
    	c = np.max(a)
        exp_a = np.exp(a-c) # ์˜ค๋ฒ„ํ”Œ๋กœ ๋Œ€์ฑ…
        sum_exp_a = np.sum(exp_a)
        y = exp_a / sum_exp_a
        
        return y

    ๐Ÿ“ ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜ ์ •ํ•˜๊ธฐ

    ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜๋Š” ํ’€๋ ค๋Š” ๋ฌธ์ œ์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ถ„๋ฅ˜์—์„œ๋Š” ๋ถ„๋ฅ˜ํ•˜๊ณ  ์‹ถ์€ ํด๋ž˜์Šค ์ˆ˜๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ .

    ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์ˆซ์ž 0๋ถ€ํ„ฐ 9์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ๋ผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ์„ 10๊ฐœ๋กœ ์„ค์ •ํ•œ๋‹ค.

    ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ์€ ๊ฐ ์ˆซ์ž์— ๋Œ€์‘

    ์ด ์˜ˆ์—์„œ๋Š” ์ƒ‰์ด ๊ฐ€์žฅ ์ง™์€ y2 ๋‰ด๋Ÿฐ์ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ์‹ ๊ฒฝ๋ง์ด ์„ ํƒํ•œ ํด๋ž˜์Šค๋Š” y2๋กœ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ์ˆซ์ž 2๋กœ ํŒ๋‹จํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.


    ๐Ÿ”— ์ •๋ฆฌ

    • ์‹ ๊ฒฝ๋ง์—์„œ๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์™€ ReLU ํ•จ์ˆ˜ ๊ฐ™์€ ๋งค๋„๋Ÿฝ๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉ
    • ์ถœ๋ ฅ์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ๋Š” ํšŒ๊ท€(regression)์—์„œ๋Š” ์ฃผ๋กœ ํ•ญ๋“ฑ ํ•จ์ˆ˜๋ฅผ, ๋ถ„๋ฅ˜(classification)์—์„œ๋Š” ์ฃผ๋กœ ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ด์šฉ
    • ๋ถ„๋ฅ˜์—์„œ๋Š” ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ ์ˆ˜๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋ ค๋Š” ํด๋ž˜์Šค ์ˆ˜์™€ ๊ฐ™๊ฒŒ ์„ค์ •
Designed by Tistory.