📒 Developing Repository
  • Feed-Forward Network Feed-Forward Networks는 가장 기본적인 인공 신경망 구조중 하나로, Input Layer(입력층)에서 Output Layer(출력층)으로 데이터가 순방향으로 흐르는 구조를 의미합니다. 여기서 Data는 각 Layer(층)을 지날 때마다 가중치에 의해 변환되고, Activation Function(활성화 함수)를 통해 다음 Layer(층)으로 전달됩니다 이러한 네트워크는 순환 연결이나 복잡한 Feedback 루프가 없어서 계산이 비교적 간단하고, 다양한 문제에 적용될 수 있습니다. 정리하자면, 데이터가 네트워크를 통해 한 방향으로만 흐른다는 것을 의미합니다. 입력 데이터는 Input Layer(입력층)에서 시작하여 Hidden Layer(은닉층)을 거쳐..

    Read more
  • Computer Architecture Hardware / Software Interface 프로그램을 기계어로 변환하는 방법: 프로그래밍 언어로 작성된 소스 코드는 컴파일러나 인터프리터를 통해 기계어, 즉 CPU가 직접 이해하고 실행할 수 있는 기계 코드(machine code)로 변환됩니다. 이 과정을 통해 고수준 언어의 추상적 명령들이 하드웨어가 이해할 수 있는 구체적인 지시로 변환됩니다. 하드웨어가 기계 코드를 실행하는 방법: CPU는 기계 코드의 명령들을 해석하고 실행합니다. 이 과정에는 명령어를 인출(fetch), 해석(decode), 실행(execute)하는 단계가 포함됩니다. CPU 내부의 여러 구성 요소가 협력하여 데이터를 처리하고 결과를 생성합니다. What is Computer? 단순..

    Read more
  • Abstract Factory Pattern 추상 팩토리 패턴(Abstract Factory Pattern)은 관련성이 있는 여러 종류의 객체를 생성하기 위한 인터페이스를 제공하는 생성 디자인 패턴입니다. 이 패턴은 구체적인 클래스에 대한 정보 없이도 서로 연관되거나 의존적인 객체의 군을 생성할 수 있도록 해줍니다. 또한, 팩토리 자체를 추상화함으로써 객체들을 쉽게 생성할 수 있습니다. 주요 특징은 다음과 같습니다: 인터페이스 제공: 추상 팩토리는 객체를 생성하기 위한 인터페이스를 제공합니다. 이 인터페이스는 관련된 객체들의 생성을 추상화하고, 클라이언트에게는 객체의 구체적인 클래스에 대한 정보를 숨깁니다. 서로 연관된 객체 생성: 추상 팩토리 패턴은 서로 연관된 객체들의 군을 생성합니다. 예를 들어, ..

    Read more
  • Factory Method Pattern 팩토리 메서드 패턴은 인스턴스를 생성하는 방법을 상위 클래스 측에서 결정하지만, 구체적인 인스턴스의 유형까지는 결정하지 않는 디자인 패턴입니다. 대신, 구체적인 내용은 모두 하위 클래스 측에서 수행됩니다. 이를 통해 인스턴스 생성을 위한 골격과 실제 인스턴스 생성의 클래스를 분리하여 생각할 수 있습니다. 상위 클래스에서 인스턴스 생성 방법 결정: 상위 클래스에서는 인스턴스를 생성하기 위한 추상 메서드(팩토리 메서드)를 정의합니다. 이 메서드는 실제로 어떤 유형의 인스턴스를 생성할지 결정하지 않고, 그 결정은 하위 클래스에 위임됩니다. 하위 클래스에서 구체적인 내용 수행: 실제 인스턴스 생성에 관련된 구체적인 로직은 하위 클래스에서 수행됩니다. 각 하위 클래스는 상..

    Read more
  • Creation Design Pattern (생성 디자인 패턴) 생성 디자인 패턴은 객체 생성에 관련된 디자인 패턴을 말합니다. 이 패턴들은 객체의 생성 과정을 캡슐화하여, 객체 생성을 더 유연하게 만들어 줍니다. 주로 객체 생성 로직이 단순하지 않거나, 객체 생성과 관련된 정보를 캡슐화하여, 시스템의 다른 부분과의 의존성을 줄이는 데 유용합니다. Factory Pattern (팩토리 패턴) 팩토리 패턴은 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스를 생성할지는 서브클래스가 결정하게 합니다. 이를 통해 객체 생성을 위한 코드와 사용을 위한 코드의 분리가 가능해집니다. 팩토리 패턴은 크게 세 가지로 나뉩니다. Simple Factory (단순 팩토리) 단순 팩토리는 팩토리 메서드를 ..

    Read more
  • 이번글에서는 단순한 Layer 부터 한번 구현해 보겠습니다. 앞의 글에서본 계산 그래프의 곱셈 노드를 'MultiLayer', 덧셈 노드를 'AddLayer'라는 이름으로 구현합니다. 곱셈 계층 모든 계층은 forward()와 backward()라는 공통의 Method(인터페이스)를 갖도록 구현합니다. forward()는 Forward Propagation(순전파), backward()는 Back propagation(역전파)를 처리합니다. 한번 구현해 보겠습니다. # coding: utf-8 class MulLayer: def __init__(self): self.x = None self.y = None # x와 y를 인수라 받고 두 값을 곱해서 반환 def forward(self, x, y): sel..

    Read more
  • Object-Oriented Programming (객체지향 프로그래밍, OOP)의 이해 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 실세계의 사물이나 개념을 객체로 모델링하여 소프트웨어를 개발하는 프로그래밍 패러다임입니다. 이 접근 방식은 데이터(속성)와 그 데이터를 처리하는 데 필요한 기능(함수 또는 메소드)을 하나의 단위로 묶어서 생각합니다. 예를 들어서 Car라는 객체가 있을때? 속성: fuel: 차량의 연료 양, speed: 차량의 현재 속도, steering wheel: 핸들의 위치, coordinate: 차량의 현재 위치 함수: accelerate(): 차량의 속도를 증가시킵니다. takeLeft(): 차량을 왼쪽으로 조향합니다. takeRight(): ..

    Read more
  • What is UML? UML(Unified Modeling Language, 통합 모델링 언어)는 시스템의 구조와 동작을 시각화하고, 사양(specification)을 문서화하는 데 사용되는 표준화된 모델링 언어입니다. 시스템을 시각화 하거나 시스템의 사양, 설계를 문서화 하기 위한 표현 방법입니다. 통합 모델링 언어는 객체 지향 프로그래밍 소프트웨어 집얍 시스템을 개발할 때 산출물을 명세화, 시각화, 문서화할 때 사용합니다. 일반적으로 UML의 범위는 매우 넓지만, 여기서는 클래스 다이어그램 및 시퀀스 다이어그램에 대해서만 설명해 보겠습니다. Code Pattern들을 표현할 때도 유용합니다. Class Diagram: 클래스와 계층 관계 클래스 다이어그램은 시스템의 정적 구조를 나타내는 UML 구조..

    Read more
  • Solid Principles (솔리드 원칙) SOLID 원칙은 객체 지향 프로그래밍과 소프트웨어 엔지니어링에서 좋은 코드 설계를 위한 다섯 가지 기본적인 원칙을 말합니다. 이 원칙들은 코드의 유지보수성을 향상시키고, 확장성을 용이하게 하며, 복잡성을 관리하는 데 도움을 줍니다. 5개의 원칙이 있습니다. S - Single Responsibility Principle (단일 책임 원칙) 각 클래스는 하나의 책임만을 가져야 합니다. 즉, 시스템에서 변경이 필요한 한 가지 이유만을 가지고 있어야 합니다. 이 원칙은 코드의 재사용성을 높이고, 변경에 대한 유연성을 증가시킵니다. O - Open/Closed Principle (개방/폐쇄 원칙) 소프트웨어의 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열..

    Read more
  • Backpropagation (오차역전파법) Backpropagation(오차역전파법)은 Weight Parameter(가중치 매개변수)의 Gradient(기울기)를 효율적으로 계산하는 방법입니다. Backpropagation(오차역전파법)을 이해하는 방법은 2가지가 있습니다. 하나는 수식을 통해서, 다른 하나는 계산 그래프를 통한것입니다. 보통은 수식을 통하지만, 이번에는 계산 그래프로 사용해서 '시각적'으로 한번 이해해 보겠습니다. 계산 그래프 계산 과정을 그래프로 한번 나타내 보겠습니다. 여기서의 그래프는 잘아는 그래프 자료구조로, 복수의 Node, Edge로 표현됩니다. 한번 문제를 보면서 이해해 보겠습니다. Q.1 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이때 지불 금액을 구..

    Read more