DeepLearning~포세틀론 편제를 간단히 정리하고 싶습니다~

14808 단어 DeepLearning

입문


차이가 많지 않다
  • 머신러닝
  • AI
  • DeepLearning
  • 나는 주위의 것을 배우지 않고 "제로부터 만들어진 Deep Learning"을 읽어보고 노트와 함께 쓰려고 한다.
    어쨌든 처음엔 파세프테론을 따라가자

    파세프테론이 뭐예요?


    퍼세프턴(perceptron)은 신경 네트워크와 진단을 연결하는 중요한 생각, 즉 알고리즘이다.
    간단하게 말하면 여러 개의 신호를 수신하여 입력으로 하고 하나의 신호를 출력하는 것이다.
    차단기의 출력 신호는 두 가지 값이 있다. 하나는 재생 신호이고, 다른 하나는 재생하지 않는 신호이다.
    재생 신호의 경우1, 재생 신호가 없는 경우0로 설명합니다.
    이것은 두 개의 입력 신호, 한 개의 출력 신호의 주파수 차단기의 예이다.
  • x1, x2: 신호 입력
  • y: 출력 신호
  • w1,w2:권중
  • 그림의 ○를 ニューロン 또는 ノード 라고 합니다.
    여기에 나타난 권한은 입력 신호가 출력 신경원으로 전송되기 전에 계산하는 데 사용된다.
    w1*x1, w2*x2
    
    이 합계가 한계값 θ 을 초과하면 출력 신호 (y) 에 입력 1
    func perceptron((x1, x2): (Double, Double), (w1, w2): (Double, Double), θ: Double) -> Double {
      let sum = w1*x1 + w2*x2
      var y
      if sum <= θ {
        y = 0
      } else {
        y = 1
      }
      return y
    }
    

    단순 논리 회로


    AND


    x1
    x2
    y
    0
    0
    0

    0
    0
    0

    0



    두 개의 입력 신호가 1 일 때만 출력 신호는 1 이고 나머지는 0 이다.
    예:
    func and((x1, x2): (Double, Double)) -> Double {
      let w1 = 5
      let w2 = 3
      let θ = 7
    
      return perceptron((x1, x2): (x1, x2), (w1, w2): (w1, w2), θ: θ)
    }
    
    이렇게 값을 주고 표의 값을 x1x2에 적용하여 계산하면
    // x1 = 0, x2 = 0の例
    let y_and = and((x1, x2): (0, 0))
    // y_and = 0
    
    나는 y와 표의 값이 모두 일치하는지 알고 싶다.

    NAND


    x1
    x2
    y
    0
    0


    0

    0




    0
    func nand((x1, x2): (Double, Double)) -> Double {
      let w1 = -5
      let w2 = -3
      let θ = -7
    
      return perceptron((x1, x2): (x1, x2), (w1, w2): (w1, w2), θ: θ)
    }
    
    값을 구할 때 서피스 법선의 원래 방향을 사용합니다.

    OR


    x1
    x2
    y
    0
    0
    0

    0

    0




    func or((x1, x2): (Double, Double)) -> Double {
      let w1 = 5
      let w2 = 3
      let θ = 2
    
      return perceptron((x1, x2): (x1, x2), (w1, w2): (w1, w2), θ: θ)
    }
    
    
    값을 구할 때 서피스 법선의 원래 방향을 사용합니다.

    편압

    perceptron 방법을 살짝 변경한 코드입니다.
    // 変更前
    func perceptron((x1, x2): (Double, Double), (w1, w2): (Double, Double), θ: Double) -> Double {
      let sum = w1*x1 + w2*x2
      var y
      if sum <= θ {
        y = 0
      } else {
        y = 1
      }
      return y
    }
    
    // 変更後
    func perceptron((x1, x2): (Double, Double), (w1, w2): (Double, Double), b: Double) -> Double { 
      let sum = w1*x1 + w2*x2 + b
      var y
      if sum <= 0 {
        y = 0
      } else {
        y = 1
      }
      return y
    }
    
    중요한 변화는 편차를 도입했다b.b = -θ.
    이것은 sum의 값이 양인지 음인지 확인할 수 있습니다.

    XOR


    x1
    x2
    y
    0
    0
    0

    0

    0




    0y,w1,w2,b방법을 제시해도 이 정도는 할 수 없다.

    다층 브로콜리


    아까 XOR가 못했어요.
    하지만 파세프트론은 하나뿐만 아니라 여러 개도 연결할 수 있다.
    func xor((x1, x2): (Double, Double)) -> Double {
      let y_nand = nand((x1, x2): (x1, x2))
      let y_or = or((x1, x2): (x1, x2))
      let y_and = and((x1, x2): (y_nand, y_or))
    
      return y_and
    }
    
    이렇게 하면 파세프트롱을 조합하여 실현할 수 있다.
    xor((x1, x2): (0, 0)) // 0
    xor((x1, x2): (1, 0)) // 1
    xor((x1, x2): (0, 1)) // 1
    xor((x1, x2): (1, 1)) // 0
    
    시험해 보니 모든 출력이 표와 같다.

    XOR의 처리는 그림과 같습니다.
    2층이 있어서 perceptron 라고 불린다.

    좋은 웹페이지 즐겨찾기