GE GXULQR Twist and Lock Kitchen or Bath Filtration System Replacement Filter Won’t Fit

If you ever have to replace your under the sink GE filter (specifically the GE GXULQR), be ready for a frustrating ride.

It looks like this:

filter

You can find the manual here and the ge product page here.

It is billed as the “Twist and Lock” Replacement Filter, the inside female hex socket sometimes rotates out of alignment when you remove the old filter. If this happens, there is no easy fix. Moreover, since the receiving head is generally under a sink or in some place you can’t easily access, it is very frustrating when you are pushing into the plastic receiver and the new filter doesn’t fit. (It is extra frustrating if you have a cast on a broken right hand, carpal tunnel in the your left hand and can’t bend your back due to a herniated L5/S1.)

head

The instructions only say to “Push filter into the filter head/bracket. Turn filter 1/4 turn to the right until it stops. The top surface of the filter will be flush with the bottom of the filter head/bracket when fully installed.” This only works if everything is properly lined up. The solution is to re-align the receiver by making a new tool from the old filter. By cutting off the head of the old filter (I used an angle grinder), and hammering in a flathead screwdriver, you have a custom alignment tool that looks like this:

custom tool

How far should you rotate it? Enough to get the socket to line up so the flanges align. For me, this meant the top of hex was flat. The biggest challenge is knowing how hard to turn. I still don’t know the internal mechanism, and the casing is all plastic and I didn’t want to break it. For me, I had to rotate it pretty hard before it turned. This was a little scary because water started to leak out from inside. However, after my wife rotated in the cartridge (two hands were necessary, and a cast doesn’t help), everything seems to be working fine.

Hopefully, this spares you some frustration.

Gradient Descent

It has been awhile since I’ve studied optimization, but gradient descent is always good to brush up on. Most optimization involves derivatives. Often known as the method of steepest descent, gradient descent works by taking steps proportional to the negative of the gradient of the function at the current point.

Mathematically, gradient descent is defined by an algorithm for two variables, say as repeated updates of:

$$ \theta_j := \theta_j – \alpha \frac{\partial J (\theta_0 , \theta_1) }{\partial \theta_j } $$

from the hypothesis:

$$ \begin{aligned}
h_\theta(x) = \sum_{i=1}^n \theta_i x_i = \theta^{T}x.
\end{aligned} $$

The is the learning rate. If is very large, we will take some huge steps downhill, small would mean baby steps downhill. If is too small, it might take too long to get our answer. If alpha is too large, we might step past our solution and never converge. Besides the pitfall of picking an , you have to have a cost function with existing derivatives (continuous) and a convex function.

Often for linear regression, we use batch gradient descent. In machine learning terminology, batch gradient descent uses all training examples. This means that for every step of gradient descent, we compare all residuals in the final least squares calculation.

Why is this relevant to machine learning? Of course there is always an analytical solution to any model, but this might involve a very large matrix inversion and be computationally infeasible.

$$ \theta = (X^T X)^{-1} X^T y $$

Gradient descent gets used because it is a numerical method that generally works and is easy to implement and a is very generic optimization technique. Also, analytical solutions are strongly connected to the model, so implementing them can be inefficient if you plan to generalize/change your models in the future. They are sometimes less efficient then their numerical approximations, and sometimes there are simply harder to implement.

To sum up, gradient descent is preferable over an analytical solution if:

  • you are considering changes in the model, generalizations, adding some more complex terms/regularization/modifications
  • you need a generic method because you do not know much about the future of the code and the model
  • analytical solution is more expensive computationaly, and you need efficiency
  • analytical solution requires more memory or processing power/time than you have or want to use
  • analytical solution is hard to implement and you need easy simple code