전체 글 37

[React] useEffect 이해하기

지난 글에서 살펴본 useState는 어플리케이션의 상태(State)값을 바꿔 구성요소를 업데이트 하는 훅(hook)*이었는데, useEffect는 반대로 상태에 따라 어떤 특정 동작을 하도록 명령하는 훅이다.import {useEffect} from 'react'; //호출useEffect(function, deps);useState와 마찬가지로 리액트의 내장된 기능이기 때문에 아래와 같이 상단에서 호출(import)만 해주면 쓸수 있으며, 기본적인 사용법은 위와 같이 수행할 기능과 의존성(dependencies)을 입력하면 되는데, 여기서 의존이란 이 useEffect가 수행되기 위한 조건이 되는 상태를 말한다고 보면 된다. 즉 두번째 인자에서 정의된 상태(state)의 변화에 의존하여 기능(func..

React.Native 2024.11.09

[React] State 이해하기 : useState

리액티브 프레임워크에서 사용하는 특이한 기능 중 하나가 State인데, 처음에 이 개념을 이해하지 못하면 상당히 혼란스러울 수 있다. 특히 웹 개발에서 리액트로 넘어올 경우 동기식 멀티 페이지로 제작되는 기존의 웹에서는 사용할 필요가 없는 개념이기 때문에 더욱 이해가 안 될 수 있는데, 따라서 이를 이해하려면 먼저 리액트의 특징 중 하나인 단일 페이지 어플리케이션에 대해 알아둘 필요가 있다.SPA (Single Page Application)단일 페이지 어플리케이션이란 말 그대로 하나의 페이지에서 움직이는 어플리케이션 개념을 의미하는데, 기존의 어플리케이션이 여러 상황에 맞는 페이지로 구성되고 서버 호출을 통해 다른 페이지 주소로 이동하던(hyperlink) 것과는 다른 방식으로 동작한다. SPA는 처음..

React.Native 2024.11.08

[AI-11] 유에서 무로, 다시 유로 : Diffusion Model

확산(Diffusion)이란, 자연 현상에서 무언가 다른 두 물질이 만나 서로 동화되며 섞여가는 과정을 의미한다. 이 때 원래 각각의 물질로서 높은 순도를 가지고 있던 두 물질은 순도가 낮아지고 동화된다. 예를 들어 커피에 우유를 섞으면 처음에는 각각 높은 순도의 커피와 우유였던 두 물질이 점차 서로에게 동화되며 커피와 우유로서의 순도는 낮아지게 된다. 커피가 우유로, 우유가 커피로 확산되면서 높은 엔트로피에서 낮은 엔트로피로 흐르는 것이다.인공지능에서 말하는 '확산 모델'도 이러한 과학에서의 확산 개념과 무관하지 않은데, 학습 과정에서 마치 확산을 시키듯 데이터를 자연 속에 확산시키면 잘 정돈되어있던(High Entrophy) 생성물의 순도는 낮아지게 될 것(Low Entrophy)이다. 즉, 풍화나 ..

[AI-10] 데이터에 따라 스스로를 조직하다: Self Organizing Map

이전 글에서 인공신경망(ANN; Artificial Neural Network)을 공부하면서 입력받은 데이터에 따라 은닉층(Hidden layer)의 가중치를 조정하여 학습하는 인공지능 학습에 대해 살펴본 바 있다. 자기 조직화 지도(SOM; Self Organizing Map) 역시 이와 같이 데이터에 맞춰 각 노드가 가중치를 조정하는 한 방법인데, 오늘은 이에 대해서 공부해보았다.여러 방법론을 공부하다 보면 '지도(Map)'라는 단어를 만나는 경우가 꽤 많은데, 보통 방법론에서 지도라는 단어를 말할 때는 X축과 Y축의 2차원 도식으로 표현이 가능한 경우가 많다. '사용자 여정 지도'나 '사용자 행동 지도'와 같은 경우가 그러하다. 이 '자기 조직화 지도' 역시도 마찬가지인데, 매우 고차원적인 특징(F..

[AI-09] 데이터에서 자라난 무작위의 숲, Random Forest

의사결정나무(Decision Tree)는 원본 데이터로부터 필터링을 거쳐 순도가 높은 데이터 그룹을 추출해가는 과정이다. 원본 데이터는 다양한 성질(불순도; Impurity)을 가지고 있기 때문에 목적에 맞게 사용하려면 적절한 분류와 그룹화가 필요한데, 이 과정을 시각화하면서 정리하는 방법이 의사결정나무이다.의사결정나무는 뿌리마디로부터 줄기마디(중간마디), 잎마디(끝마디)의 순으로 '성장'하는데, 이 과정을 가지치기(pruning)라고 한다. 이 도식은 실제 나무와는 달리 위에서부터 아래로 자라는 형태로 표현되는데, 상위노드는 '부모마디'가 되며 하위노드는 '자식마디'가 된다. 그리고 뿌리마디를 제외한 잎마디까지의 전체 마디수가 '깊이(Depth)'가 된다.좋은 의사결정나무는 좋은 분할(가지치기)로부터 ..

[R] 정규 분포 관련 기능 정리

R에서 쓰이는 정규 분포 관련 기능에 대해 공부한 내용을 정리해 본다. 먼저 정규분포(Normal Distribution)란, 고등수학에서 배우듯이 하나의 꼭지를 중심으로 좌우로 대칭되는 종형의 분포를 의미한다. 엔트로피(Entrophy)를 최대화하는 분포로, 특별한 외력이 가해지지 않은 대수의 영역에서 자연적으로 관찰되는 분포이기 때문에 많은 경우에 기준으로 삼게되기도 한다.  R 역시 이 정규분포와 관련된 기능들을 제공하고 있는데, 아래의 4가지가 있다. 뒤의 norm 외에는 한 글자씩이고 헷갈리기 쉬운 기능들이라 따로 정리해본다. 먼저 공통적으로는, mean(평균)과 sd(표준편차)가 따로 설정되지 않으면 표준정규분포의 기본값인 0 / 1로 각각 설정된다는 점이다. dnorm : Density Fu..

Statistics 2024.07.28

[AI-08] 진흙 속에서 진주 찾기 : KDD

데이터는 일반적으로는 거의 맹목적일 정도로 가치 있는 재화처럼 여겨지지만 사실 의미가 부여될 수 없다면 그 자체로서는 객관적인 현상적 지표에 불과하다. 다만 당장은 가치가 없어보여도 데이터의 특성 상 어떤 것이 가치를 가지게 될 지 모르기 때문에 잠재적인 가치를 보는 것인데, 실제로는 데이터의 군집(Cluster), 상관관계(Correlation), 분류(Classification) 등을 통해 의미를 찾는 것이 중요하다. 이는 마치 흙 속에서 보물을 찾는 것과 비슷하며, 비유적으로 채굴(Mining)이라고 부른다. 우리가 흔하게 말하는 데이터 마이닝(Data Mining)이 그것이다. 그 중에서도 가장 전통적인 방법이 데이터 속에서 지식 찾기(KDD; Knowledge Discovery in Databa..

[AI-07] 어떻게 학습시킬까? : 레이블과 강화

인공지능의 학습 방법은 크게 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning), 그리고 강화학습(Reinforcement Learning)으로 분류된다. 이들은 레이블의 유무에 따른 지도학습과 비지도학습, 그리고 레이블이 아닌 강화를 통해 학습을 유도하는 강화학습의 두 가지로 먼저 나눠볼 수 있다. 먼저 레이블(Label)에 대해 살펴보면, 레이블은 문자 그대로 데이터에 정의를 입혀 학습시키는 것을 의미한다. 즉, 문제에 대해 정답이 존재하는 데이터인데, 예를 들어 OCR(Optical Chracter Recognition)과 같은 기술이 이에 해당한다. 이미지 속의 숫자 또는 문자는 일련의 배치를 가지고 일정 수준 이상 대비도가 차이나는 이미지 픽셀 데..

[AI-06] 신경망의 활동을 표현하다 : 시그모이드 함수

이제까지의 공부를 통해, 데이터를 수치화해 수학적 / 통계적으로 해석함으로써 각 신경망 유닛이 데이터에 부합하는 최적의 식을 찾는 것이 기계학습의 전반적인 원리임을 알아보았다. 이전글에서는 이 식을 간단하게 H(x)=Wx+b와 같이 기본적인 1차함수로만 다루면서 공부하였지만, [AI-04]에서 공부한 내용에서처럼 신경망은 여러 개의 입력값과 복잡한 노드로 연결되기 때문에 이렇게 간단한 식으로 해결되지는 않는다. 예를 들어, 3개의 입력을 처리하는 신경망 노드의 경우, 아래와 같은 식이 필요할 것이다.W₁x₁+W₂x₂+W₃x₃-θ 즉, 3개의 각각의 입력값에 대해 서로 다른 가중치를 적용한 값이 각 노드의 편향(임계값,  θ)보다 높은지 낮은지에 따라 신경망이 1 (반응) 또는 0 (미반응)으로 다음 노드..

[AI-05] 수치화하여 방향성 찾기: 벡터와 텐서

이전에 공부한 내용들을 종합하면, 기계가 학습을 위한 기본 이론과 로직, 그리고 그 학습이 일어나는 환경인 신경망까지 준비되었다. 이제 학습할 데이터를 입력층을 통해 입력해야 하는데, 앞서 공부한 회귀분석을 하려면 먼저 데이터를 분석할 수 있는 숫자로 만들어야 한다. 이 때 사용되는 개념이 벡터(Vector), 나아가 텐서(Tensor)의 개념이다.  이들을 이해하기 위해서 먼저 가장 기본이 되는 스칼라(Scalar)부터 살펴보면, 스칼라는 영어의 'Scale'과 같은 말로, 어떤 개체의 변하지 않는 물리량을 의미한다. 온도나 질량과 같은 값은 개체 고유의 값으로 외부의 특별한 조작 없이는 어떠한 환경에서도 일정하게 유지되며, 방향성을 가지지 않는다. 때문에 이들은 1차원적으로 표현되며, 기본적인 사칙연..

728x90
반응형