본문 바로가기

분류 전체보기127

Perceptron perceptron은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 아래는 2개의 입력을 받는 perceptron이다. $ x $ : 입력 $ w $ : 가중치(weight)로 말 그대로 해당 입력이 얼마나 중요한지를 나타낸 값이다. 이 값이 크면 출력에 영향을 더 크게 미친다. $ b $ : 편향(bias)으로 해당 뉴런이 얼마나 쉽게 활성화될 수 있느냐를 조절하는 값이다. 이 값이 크면 입력이 작더라도 활성화될 수 있다. $ y $ : 출력 출력의 경우 노드에 전달된 값의 합이 0을 넘을 때 1을 출력하며, 0을 넘지 않으면 0을 출력한다. 그러면 이 임계값에 대해서는 아래와 같이 나타낼 수 있다. $ y = \begin{cases} 0 & \text{if } w_1x_1 + w_2x_2 +.. 2024. 3. 3.
Gradient Descent Gradient descent(경사하강법)란 함수의 특정 위치에서 함수의 경사(기울기)를 구하고 그 반대 방향으로 이동하는 것을 반복함으로써 함수의 최소값을 찾아가는 알고리즘이다. 앞서 Gradient 벡터에서 살펴보았듯 Gradient를 사용하면 특정 지점에서 가장 기울기가 가파른 곳으로 향하는 벡터를 구할 수 있기 때문에 이 반대로 이동한다면 값이 줄어드는 원리를 사용하는 것이다. https://devs0n.tistory.com/152 Gradient Vector 다음과 같은 다항식이 있을 때 $$ f(x, y)=x^2+2 x y+y^2 $$ Gradient 벡터는 각 항에 대한 편미분을 원소로 갖는 벡터의 형태를 가진다. $$ \nabla f(x, y)=\frac{\partial f(x, y)}{\.. 2024. 3. 3.
Gradient Vector 다음과 같은 다항식이 있을 때 $$ f(x, y)=x^2+2 x y+y^2 $$ Gradient 벡터는 각 항에 대한 편미분을 원소로 갖는 벡터의 형태를 가진다. $$ \nabla f(x, y)=\frac{\partial f(x, y)}{\partial x} \vec{i}+\frac{\partial f(x, y)}{\partial y} \vec{\jmath} $$ 여기서 𝑖 는 x축, 𝑗 는 y축에 대한 단위벡터이다. 이 Gradient 벡터는 어느 지점에서의 기울기를 나타내는 벡터이며, $ f(x, y) $ 의 특정 지점에서 기울기가 가장 가파른 곳으로 향하는 벡터이다. 그래프로 확인해보면 아래와 같다. 먼저 $ f(x, y) $를 확인해보자. 수식적인 표현이 아니더라도 $ f(x, y) $ 그래프를 .. 2024. 2. 19.
BFS (Breadth First Search) 설명 BFS의 경우 DFS와 달리 재귀적으로 처리되지 않고 queue를 사용하여 탐색할 노드의 순서를 저장한다. 이번 포스팅에서는 BFS를 통해 어떻게 node를 탐색하는지에 대해 알아보도록 한다. Binary Tree 기반 BFS 기본적인 Binary Tree 형태로 넓이 우선으로 탐색하는 과정을 살펴보자. Tree는 좌측에 있는 그림과 같은 형태라고 하면, 우측의 화살표 순으로 탐색을 해야한다. 1. 먼저 탐색해야할 node queue에 root node를 추가한다. 2. 탐색해야할 node queue를 보고 node 탐색 iteration이 시작된다. 2.1) (왼쪽) queue를 pop하니 node1을 탐색해야하기 때문에 node1을 탐색한다. (오른쪽) 탐색한 뒤 node1과 연결된 node들(no.. 2024. 2. 13.
2차원 List 에서 distinct 처리하기 List에서 element를 distinct 처리하기 위해서 set()을 쓰곤 한다. 하지만 List를 element로 갖는 2차원 List에서 distinct 처리를 하기 위해 set()을 사용하는 경우 아래와 같이 TypeError가 난다. data = [ [1, 1], # duplicated [2, 2], # unique [1, 1], # duplicated ] set(data) # Exception has occurred: TypeError # unhashable type: 'list' List는 mutable 이기 때문에 hash를 지원하지 않기 때문에 List element를 tuple로 변환한 뒤 set()을 사용해야 한다. (참고: In Python, why is a tuple hashab.. 2024. 2. 12.
[Tips] 내가 쓰는 툴 (Mac) 업무를 하면서 개발 뿐만 아니라 여러 가지 작업을 하게 되는데 이 때의 효율성이 개발 생산성 못지 않게 중요하다. 이번 포스팅에서는 개발을 포함한 업무를 하면서 효율을 향상하기 위해 내가 어떤 툴을 쓰는지에 대해 정리해본다. Spectacle 애플리케이션을 여러 개 켜서 작업해야하는 경우 (e.g. 개발을 하면서 기획을 확인하기 위해 피그마, 노션, IDE을 같이 확인해야할 때) Mac의 경우 애플리케이션 창의 화면을 조작할 때 항상 마우스를 써야해야해서 매우 불편하다. Spectacle은 이러한 불편함을 해소시켜 주는 툴로 키보드만을 사용하여 애플리케이션 창의 크기와 위치를 변경할 수 있다. 다만 현재는 maintain 되고 있지 않으며 기존에 운영되던 사이트도 접속되지 않고 github reposit.. 2023. 12. 8.